Java JsonPath: 将对象插入另一个对象

huangapple go评论116阅读模式
英文:

Java JsonPath: Insert object into another object

问题

我正在使用JayWay JsonPath来操作JSON对象。

我想要将一个JSON对象插入到JSON数组中:

### 在之前
{
  "students": []
}

### 在之后
{
  "students": [{"id": 1, "name": "Bob"}]
}

不知何故,我无法在JsonPath中完成这个操作。如果我将对象添加为字符串,它不会被识别为JSON对象:

var context = JsonPath.parse("{\"students\":  []}");
context.add("students", "{\"id\":  1, \"name\":  \"Bob\"}");

System.out.println(context.jsonString());
// > {"students":["{\"id\":  1, \"lastName\":  \"Bob\"}"]}

如果我尝试解析该对象,JsonPath会添加一个空对象:

var context = JsonPath.parse("{\"students\":  []}");
context.add("students", JsonPath.parse("{\"id\":  1, \"name\":  \"Bob\"}"));

System.out.println(context.jsonString());
// > {"students":[{}]}

我如何将JSON对象插入到数组中?

英文:

I am using the JayWay JsonPath to manipulate JSON objects.

I want to insert a JSON object into a JSON array:

### before
{
  "students": []
}

### after
{
  "students": [{"id": 1, "name": "Bob"}]
}

Somehow I cannot accomplish this in JsonPath. If I add the object as a string, it is not recognized as a JSON object:

var context = JsonPath.parse("{\"students\":  []}");
context.add("students", "{\"id\":  1, \"name\":  \"Bob\"}");

System.out.println(context.jsonString());
// > {"students":["{\"id\":  1, \"lastName\":  \"Bob\"}"]}

If I try to parse the object, JsonPath adds an empty object:

var context = JsonPath.parse("{\"students\":  []}");
context.add("students", JsonPath.parse("{\"id\":  1, \"name\":  \"Bob\"}"));

System.out.println(context.jsonString());
// > {"students":[{}]}

How can I insert the JSON object into the array?

答案1

得分: 1

Use .json() method:

var context = JsonPath.parse("{\"students\": []}");
Object entryToAdd = JsonPath.parse("{\"id\": 1, \"name\": \"Bob\"}).json();
String updatedJson = context.add("students", entryToAdd).jsonString();
System.out.println(updatedJson);

prints

{"students":[{"id":1,"name":"Bob"}]}
英文:

Use .json() method:

    var context = JsonPath.parse("{\"students\":  []}");
    Object entryToAdd = JsonPath.parse("{\"id\":  1, \"name\":  \"Bob\"}").json();
    String updatedJson = context.add("students", entryToAdd).jsonString();
    System.out.println(updatedJson);

prints

> {"students":[{"id":1,"name":"Bob"}]}

huangapple
  • 本文由 发表于 2023年6月19日 23:25:04
  • 转载请务必保留本文链接:https://go.coder-hub.com/76508039.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定