将新条目添加到具有dup键的json文件中

时间:2018-11-15 19:28:54

标签: java android json

data.json,请注意dup关键城市

{
  "type": "1",
  "city": [
  {

  "name": "c1",
  "dis": [
    {
      "dis_name": "d1"
    },
    {
      "dis_name": "d2"
    }
  ]
 }
],

"city": [
 {
  "name": "c2",
  "dis": [
    {
      "dis_name": "d3"
    },
    {
      "dis_name": "d2"
    }
  ]
 }
 ]
}

我认为,由于存在dup键,因此从文件中构建的JSON对象不正确或具有部分数据。

JSONObject obj = new JSONObject(readJSONFromAsset());
从堆栈溢出复制的

readJSONFromAsset()

public String readJSONFromAsset() {
    String json = null;
    try {
        InputStream is = getAssets().open("data.json");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        json = new String(buffer, "UTF-8");
    } catch (Exception ex) {
        ex.printStackTrace();
        return null;
    }
    return json;
}

在obj中,我仅看到json文件的部分数据。在json文件/对象中添加以下新条目的最佳方法是什么?

"city": [
{
 "name": "c3",
  "dis": [
 {
  "dis_name": "d5"
 },
 {
  "dis_name": "d2"
 }
 ]
}
]

1 个答案:

答案 0 :(得分:1)

那不是有效的json文档。有效的json不能有重复的密钥。尝试将其视为JSON时会发生什么情况取决于您的反序列化器选择如何实现它-它可能会引发异常,保留第一个或保留最后一个作为常见选择。

唯一有效的答案是修复您的数据,以便它是有效的json文档。我建议将城市变成一个数组。