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

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

Java JsonPath: Insert object into another object

问题

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

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

  1. ### 在之前
  2. {
  3. "students": []
  4. }
  5. ### 在之后
  6. {
  7. "students": [{"id": 1, "name": "Bob"}]
  8. }

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

  1. var context = JsonPath.parse("{\"students\": []}");
  2. context.add("students", "{\"id\": 1, \"name\": \"Bob\"}");
  3. System.out.println(context.jsonString());
  4. // > {"students":["{\"id\": 1, \"lastName\": \"Bob\"}"]}

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

  1. var context = JsonPath.parse("{\"students\": []}");
  2. context.add("students", JsonPath.parse("{\"id\": 1, \"name\": \"Bob\"}"));
  3. System.out.println(context.jsonString());
  4. // > {"students":[{}]}

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

英文:

I am using the JayWay JsonPath to manipulate JSON objects.

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

  1. ### before
  2. {
  3. "students": []
  4. }
  5. ### after
  6. {
  7. "students": [{"id": 1, "name": "Bob"}]
  8. }

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

  1. var context = JsonPath.parse("{\"students\": []}");
  2. context.add("students", "{\"id\": 1, \"name\": \"Bob\"}");
  3. System.out.println(context.jsonString());
  4. // > {"students":["{\"id\": 1, \"lastName\": \"Bob\"}"]}

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

  1. var context = JsonPath.parse("{\"students\": []}");
  2. context.add("students", JsonPath.parse("{\"id\": 1, \"name\": \"Bob\"}"));
  3. System.out.println(context.jsonString());
  4. // > {"students":[{}]}

How can I insert the JSON object into the array?

答案1

得分: 1

Use .json() method:

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

prints

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

Use .json() method:

  1. var context = JsonPath.parse("{\"students\": []}");
  2. Object entryToAdd = JsonPath.parse("{\"id\": 1, \"name\": \"Bob\"}").json();
  3. String updatedJson = context.add("students", entryToAdd).jsonString();
  4. 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:

确定