所以我jsonStr就是这个
[
{
"data": [
{
"itemLabel": "Social Media",
"itemValue": 90
},
{
"itemLabel": "Blogs",
"itemValue": 30
},
{
"itemLabel": "Text Messaging",
"itemValue": 60
},
{
"itemLabel": "Email",
"itemValue": 90
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
我想在这个data数组之后添加一个属性
[
{
"data": [
{
"itemLabel": "Social Media",
"itemValue": 90
},
{
"itemLabel": "Blogs",
"itemValue": 30
},
{
"itemLabel": "Text Messaging",
"itemValue": 60
},
{
"itemLabel": "Email",
"itemValue": 90
}
],
"label": "2007"
}
]
Run Code Online (Sandbox Code Playgroud)
在这里阅读它说要做类似的事情
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(jsonStr);
((ObjectNode) jsonNode).put("label", "2007");
String json = mapper.writeValueAsString(jsonNode);
return json;
Run Code Online (Sandbox Code Playgroud)
问题是我一直收到错误
java.lang.ClassCastException: com.fasterxml.jackson.databind.node.ArrayNode cannot be cast to com.fasterxml.jackson.databind.node.ObjectNode
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我目前正在使用Jackson-core 2.2.2
Hen*_*nry 10
顶级节点表示数组,而不是对象.在添加属性之前,您需要更深入一级.
你可以使用这样的东西:
JsonNode elem0 = ((ArrayNode) jsonNode).get(0);
((ObjectNode) elem0).put("label", "2007");
Run Code Online (Sandbox Code Playgroud)
当然,如果结构看起来不像您期望的那样,您可能需要添加一些错误处理.
| 归档时间: |
|
| 查看次数: |
14877 次 |
| 最近记录: |