我在字符串中转换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);
答案 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());
}