如何用动态结构更新java中的嵌套json

gwo2fgha  于 2021-07-07  发布在  Java
关注(0)|答案(0)|浏览(210)

我有一个属性文件,用户可以在其中定义完整的字段名,例如:

league.firstname
league.lastName

现在在我的代码中,我有一个传入的json,我想首先检索现有的值,然后编辑属性文件中提到的字段的值。在本例中,检索并编辑league.firstname和league.lastname字段的值。json看起来像:

{
  "_internal": {
    "pubDateTime": "2017-12-10 11:42:23.504",
    "xslt": "xsl/league/roster/marty_active_players.xsl",
    "eventName": "league_roster"
  },
  "league": {
      {
        "firstName": "Alex",
        "lastName": "Abrines",
        "personId": "203518",
        "teamId": "1610612760"
      }
  }
}

现在我知道我可以这样做:

// retrieve values
String fName = jsonObj.getJSONObject("league").getString("firstName");
String lName = jsonObj.getJSONObject("league").getString("lastName");
// put new values
jsonObj.getJSONObject("league").put("firstName", "newVal1");
jsonObj.getJSONObject("league").put("lastName", "newVal2");

但我如何动态地实现这一点。例如,属性文件类似于:

parentObj.child1.child2.child3

现在我想编辑这个4层深的json,所以我想做如下操作:

// how to do the following
String oldVal = jsonObj.getString("parentObj.child1.child2.child3");
jsonObj.put("parentObj.child1.child2.child3", "newVal");

注:
json深度的级别可以是1<长度<100。
用户可以在属性文件中输入任何相关值。如果该键在json中不存在,则需要捕获异常。
传入的json格式不固定。

暂无答案!

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

相关问题