![](/img/trans.png)
[英]Read Object Array From JSON Array in a JSON file (using Jackson)
[英]Removing an object from Json Array in file using jackson
我的JSON
如下所示,我需要从secondArray
删除第一个对象。
{
"firstArray":[
{
"data1":1,
"data2":"DATA"
},
{
"data1":2,
"data2":"DATA2"
}
],
"secondArray":[
{
"number":1,
"data":"DATA3",
},
{
"number":2,
"data":"DATA4"
}
]
}
这是我到目前为止的内容:
public boolean remove(SecondArray object) {
try {
ObjectNode root = (ObjectNode) mapper.readTree(jsonFile);
ArrayNode array = (ArrayNode) root.get("secondArray");
if (array.path("number").asInt() == object.getId()) {
movieArray.remove(object.getId());
}
System.out.println(array.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
我的问题是object.getId()
以数字JSON
获取id
,但是在JSON
它位于“”内部。 我如何进行这项工作,以便可以删除从secondArray
输入的对象?
不要通过object.id
删除数组item
。 通过index
将其删除。 您需要遍历数组,找到number = object.id
JSON Object
并将其删除。 例:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.File;
public class JsonApp {
public static void main(String[] args) throws Exception {
File jsonFile = new File("./resource/test.json").getAbsoluteFile();
ObjectMapper mapper = new ObjectMapper();
ObjectNode root = (ObjectNode) mapper.readTree(jsonFile);
ArrayNode array = (ArrayNode) root.get("secondArray");
int numberToRemove = 1;
for (int i = 0; i < array.size(); i++) {
if (array.get(i).get("number").asInt() == numberToRemove) {
array.remove(i);
break;
}
}
System.out.println(array);
System.out.println(root);
}
}
上面的代码打印:
[{"number":2,"data":"DATA4"}]
{"firstArray":[{"data1":1,"data2":"DATA"},{"data1":2,"data2":"DATA2"}],"secondArray":[{"number":2,"data":"DATA4"}]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.