我們需要更新中間的JSON數據,並且需要使用java返回更新的JSON數據。它也應該支持任何類型的JSON數據。如何修改JSON數據並返回更新的JSON數據
例如: 假設{object:{"color":"red","shape":"Triangle"}}
是JSON數據,並在這方面我們需要更新shape
值Rectangle
,我們需要如下返回更新JSON數據:
{object:{"color":"red","shape":"Rectangle"}}
爲此,我們需要通過元素路徑(我們需要更新哪個元素)以及updateText和JSON數據到JAVA代碼。
這裏是methodCall:
updateValue("object/shape", "Rectangle", "{object:{"color":"red","shape":"Triangle"}}")
我們使用GSON庫嘗試下面的代碼。但是通過這段代碼,我們可以更新目標Json元素,但是需要返回整個JSON數據和更新後的值。
所以請建議我們如何使用更新的文本重新構建JSON數據。
下面是我們嘗試更新Json數據的代碼。
public String updateValue(String keyPath, String updateText, String jsonText) {
String[] keys = keyPath.split("/");
JsonParser jsonParser = new JsonParser();
JsonObject jsonObject = (JsonObject) jsonParser.parse(jsonText);
String result = "";
for(String key : keys)
{
if (jsonObject.get(key) instanceof JsonObject)
{
jsonObject = (JsonObject)jsonObject.get(key);
}
else if(jsonObject.get(key) instanceof JsonArray)
{
JsonArray jsonArray = (JsonArray)jsonObject.get(key);
result = jsonArray.toString();
}
else
{
result = jsonObject.get(key).toString();
}
}
result = result.replace(result, updateText);
return result;
}
嗨Praddep, 感謝您的迴應。在這段代碼中,** returnVal **指的是變量** jsonObject **,它修改了循環內部。 並fin'ly它返回最內層的JSONObject,其中包含我們的JSON值或者JSONArray或值。 ex:在這個例子中,這個代碼返回'{「color」:「red」,「shape」:「Triangle」} 並省略'{「Object」}' 它應該返回: '{object:{「顏色「:」紅色「,」形狀「:」矩形「}}'(它應該重新構建具有修改的val的整個JSON對象) –