带有List to String to JsonNode的JSONObject

时间:2015-04-20 09:34:49

标签: java jackson jsonobject

我在字符串中转换JSONObject以使用jackson在JsonNode中解析它,但我在我的JSONObject中有一个List,当我用ObjectMapper解析它时我得到了这个:

["{Property1 : value1, Property2 : value2}"]

我无法致电myJsonNodeObject.get(i).get("Property1")这是我的问题。

我已经尝试在我的JSONObject中将JSONArray中的List强制转换但不起作用。

resultAsJSONObject = new JSONObject();
resultAsJSONObject.put("Label", getMetricStatisticsResult.getLabel());
resultAsJSONObject.put("Datapoints", getMetricStatisticsResult.getDatapoints());
resultAsJSONObject.put("fromDate", fromDate.getTimeInMillis());
resultAsJSONObject.put("toDate", toDate.getTimeInMillis());
resultAsJSONObject.put("error", "");
resultAsString = resultAsJSONObject.toString();

mapper.readValue(resultAsString, MetricsData.class);

2 个答案:

答案 0 :(得分:2)

假设您有一个JSON字符串,您只想更改它。然后你可以使用Jackson将其解析为ObjecNode然后修改它。这是一个例子:

public class JacksonModifyJson {

    static final String JSON = "{\"name\":\"Bob\", \"age\":13}";

    public static void main(String[] args) throws IOException {
        final ObjectMapper mapper = new ObjectMapper();
        final ObjectNode jsonNode = mapper.readValue(JSON, ObjectNode.class);
        jsonNode.put("url", "example.com");
        System.out.println(mapper.writeValueAsString(jsonNode));
    }
}

输出:

{"name":"Bob","age":13,"url":"example.com"}

答案 1 :(得分:0)

这种方法真的很简单,也可以使用

尝试{

    JSONObject jsonObject = new JSONObject(THESTRINGHERE);
    String[] names = JSONObject.getNames(jsonObject);
    JSONArray jsonArray = jsonObject.toJSONArray(new JSONArray(names));

    ArrayList<String> listdata = new ArrayList<String>();     
    JSONArray jArray = (JSONArray)jsonArray; 
    if (jArray != null) { 
       for (int i=0;i<jArray.length();i++){ 
        listdata.add(jArray.get(i).toString());
       } 
    } 
//  System.out.println(listdata);



} catch (Exception e) {
    System.out.println(e.getMessage());
}