Java 更新json以用jsonarray替换jsonobject

Java 更新json以用jsonarray替换jsonobject,java,json,jsonpath,Java,Json,Jsonpath,我遇到了一种情况,传入的JSON可能有一个对象或数组——同一个键的格式不一致。因此,我需要在处理具有对象而不是数组的JSON之前转换它们。我基本上有一个需要检查和更新的JSONPATH列表 我尝试过不同的方法,下面的代码是最新的。删除部分按预期工作,但添加部分未添加数组。我也试着用set和put代替add private static void modifyInputJsonForArray(String originalInputJsonStr, Set<String> misma

我遇到了一种情况,传入的JSON可能有一个对象或数组——同一个键的格式不一致。因此,我需要在处理具有对象而不是数组的JSON之前转换它们。我基本上有一个需要检查和更新的JSONPATH列表

我尝试过不同的方法,下面的代码是最新的。删除部分按预期工作,但添加部分未添加数组。我也试着用set和put代替add

private static void modifyInputJsonForArray(String originalInputJsonStr, Set<String> mismatchingArrayPaths) {
     
//mismatchingArrayPaths.add("$.PayLoad.NBHdr.AppCoverages.AppCoveragesPartyRole[0].Party.PartyAddress");
//Need to convert PartyAddress from JsonObject to JsonArray

    JsonObject originalInputJsonObj = new Gson().fromJson(originalInputJsonStr, JsonObject.class);
    System.out.println("original json " + prettyPrintJson(originalInputJsonObj));
    for (String mismatchingArrayPath : mismatchingArrayPaths) {
        JsonObject payload = JsonPath.using(config).parse(originalInputJsonStr).read(mismatchingArrayPath, JsonObject.class);
        System.out.println("value at " + mismatchingArrayPath + " is "  + prettyPrintJson(payload));

        DocumentContext payloadRemoved = JsonPath.using(config).parse(originalInputJsonStr).delete(mismatchingArrayPath);
        JsonObject val1 = payloadRemoved.read("$");
        System.out.println("Json  after deleting  value at " + mismatchingArrayPath + " is "  + prettyPrintJson(val1));
        JsonArray payloadArray = jsonnObjectToJsonArray(payload);
        System.out.println("payloadArray "+ payloadArray);

        payloadRemoved.set(JsonPath.compile(mismatchingArrayPath), payloadArray);
        JsonObject val2 = payloadRemoved.read("$");
        System.out.println("payloadRemoved readded array value at " + mismatchingArrayPath + " is "  + prettyPrintJson(val2));
    }
}
private static void modifyInputJsonForArray(字符串originalInputJsonStr,设置不匹配的hinGarrayPath){
//不匹配的hingRayPath.add(“$.PayLoad.NBHdr.AppCoverages.AppCoveragesPartyRole[0].Party.PartyAddress”);
//需要将PartyAddress从JsonObject转换为JsonArray
JsonObject originalinputjsonobject=new Gson().fromJson(originalInputJsonStr,JsonObject.class);
System.out.println(“原始json”+prettyPrintJson(originalInputJsonObj));
for(字符串不匹配hingarrayPath:不匹配hingarrayPath){
JsonObject payload=JsonPath.using(config).parse(originalInputJsonStr).read(mistchingarraypath,JsonObject.class);
System.out.println(“在“+mistchingarraypath+”处的值为“+prettyPrintJson(有效负载));
DocumentContext payloadRemoved=JsonPath.using(config).parse(originalInputJsonStr).delete(mistchingarraypath);
JsonObject val1=payloadRemoved.read($);
System.out.println(“删除“+mistchingarraypath+”处的值后的Json是”+prettyPrintJson(val1));
JsonArray payloadArray=jsonnObjectToJsonArray(有效载荷);
System.out.println(“payloadArray”+payloadArray);
payloadRemoved.set(JsonPath.compile(不匹配的hingarraypath),payloadArray);
JsonObject val2=payloadRemoved.read($);
System.out.println(“payloadRemoved读取的数组值在“+mistmchingarrayPath+”是“+prettyPrintJson(val2));
}
}
有什么建议可以让我的工作吗

多谢各位