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