更新json以用jsonarray替换jsonobject

tjrkku2a  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(226)

我遇到了一种情况,传入的json可能有一个对象或数组-同一个键的格式不一致。因此,在处理之前,我需要转换具有对象而不是数组的json。我基本上有一个jsonpath列表,需要检查和更新。
我尝试过不同的方法,下面的代码是最新的。delete部分按预期工作,但是add没有添加数组。我也试着用set和put代替add

  1. private static void modifyInputJsonForArray(String originalInputJsonStr, Set<String> mismatchingArrayPaths) {
  2. //mismatchingArrayPaths.add("$.PayLoad.NBHdr.AppCoverages.AppCoveragesPartyRole[0].Party.PartyAddress");
  3. //Need to convert PartyAddress from JsonObject to JsonArray
  4. JsonObject originalInputJsonObj = new Gson().fromJson(originalInputJsonStr, JsonObject.class);
  5. System.out.println("original json " + prettyPrintJson(originalInputJsonObj));
  6. for (String mismatchingArrayPath : mismatchingArrayPaths) {
  7. JsonObject payload = JsonPath.using(config).parse(originalInputJsonStr).read(mismatchingArrayPath, JsonObject.class);
  8. System.out.println("value at " + mismatchingArrayPath + " is " + prettyPrintJson(payload));
  9. DocumentContext payloadRemoved = JsonPath.using(config).parse(originalInputJsonStr).delete(mismatchingArrayPath);
  10. JsonObject val1 = payloadRemoved.read("$");
  11. System.out.println("Json after deleting value at " + mismatchingArrayPath + " is " + prettyPrintJson(val1));
  12. JsonArray payloadArray = jsonnObjectToJsonArray(payload);
  13. System.out.println("payloadArray "+ payloadArray);
  14. payloadRemoved.set(JsonPath.compile(mismatchingArrayPath), payloadArray);
  15. JsonObject val2 = payloadRemoved.read("$");
  16. System.out.println("payloadRemoved readded array value at " + mismatchingArrayPath + " is " + prettyPrintJson(val2));
  17. }
  18. }

有什么建议可以让这个工作吗?
谢谢您

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题