0

我正在尝试将以下 JSON 结构(较大 JSON 对象的一部分)转换为 POJO,但将异常复制到下面(使用 Java/Jackson)。

JSON

"outputKeys":
{"ABC":"gGyIioUr4Jfr5QiCm6Z==",
"DEF":"RxHfNyD2JyPOpG5tv3Jaj5g=="}  

Java 类

    private class OutputKeys {

        private String key;
        private String value;

        public OutputKeys(String key, String value) {
            this.key = key;
            this.value = value;
        }
}

&

ObjectMapper mapper = new ObjectMapper();
mapper.readValue(jsonString, Test.class);

例外:

no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?

测试类具有 OutputKeys 作为属性。
欢迎大家提出意见。我也尝试过使用 OutputKeys 列表。

更新:

我尝试了以下方法但没有成功:

class OutputKeys {
public Map<String, String> keys;
///with constructor/setter/getters
}

&

class OutputKeys {
public List<OutputKey> keys;
///with constructor/setter/getters

   public class OutputKey {

        Map<String, String> outputs = new HashMap<>();
// tried this too:
// String key
//String value

}
4

3 回答 3

0

您只需要下面提到的单个类,包含

  1. 所有键(ABC 和 DEF)
  2. 获取器/设置器
  3. toString() 您将使用它与 JSON 进行交互。

    公共类 OutputKeys { 私有字符串 ABC;

    private String DEF;
    
    public String getABC ()
    {
        return ABC;
    }
    
    public void setABC (String ABC)
    {
        this.ABC = ABC;
    }
    
    public String getDEF ()
    {
        return DEF;
    }
    
    public void setDEF (String DEF)
    {
        this.DEF = DEF;
    }
    
    @Override
    public String toString()
    {
        return "ClassPojo [ABC = "+ABC+", DEF = "+DEF+"]";
    }
    

    }

如果您需要更多详细信息,请告诉我。

于 2017-03-17T21:18:00.823 回答
0

由于键是动态的,我最终使用 JsonNode 上的迭代器反序列化数据:

jsonNode.get("outputKeys").iterator() 

& 然后通过迭代器获取相关的动态密钥信息。

于 2017-03-22T13:34:29.813 回答
-1

我需要一个类似的 NodeJS 工具。这样我就可以在更大的序列化模型(JSON)的部分上编写测试。

所以,如果我只需要 "ABC":"gGyIioUr4Jfr5QiCm6Z==" 或 "XYZ":{"Hello": "My String", "Content": [1,2,3]},我唯一想测试的属性目前是:

var sutXYX = { Hello: "My String", Content: [ 1, 2, 2]};

我将此工具编写为实用程序https://github.com/whindes/PojoScriptifyFromJSON

于 2017-05-02T21:31:32.337 回答