【问题标题】:Read JSON from assets when file constains multiple JSONs当文件包含多个 JSON 时从资产中读取 JSON
【发布时间】:2017-03-02 08:19:15
【问题描述】:

如何从包含多个 JSON 的文件中读取 JSON?

我的意思是,我看起来像这样:

{
  "status": false,
  "info": "The email field is required."
}

{
  "status": false,
  "info": "The email field is required."
}

{
  "status": false,
  "info": "The email field is required."
}

{
  "status": false,
  "info": "The email field is required."
}

{
  "status": false,
  "info": "The email field is required."
}

{
  "status": false,
  "info": "The email field is required."
}

例如我想获得一个 JSON 数组或读取 JSON 编号 1 或 4 的机会。

【问题讨论】:

  • 如果你不能影响json文件,你可以使用像jackson这样的库,你可以自定义解析,但不必手动做所有事情。
  • 然后在流的开头添加“[”并在结尾添加“]”,您将拥有JSONArrayJSONObjects
  • @pskink 但是如果我不能修改这个文件怎么办?有没有办法将 JSON 读取到数组或类似的东西?
  • 好吧忘了我说的,我没有注意到元素没有用“,”字符分隔,所以我说的不起作用

标签: android json file android-studio assets


【解决方案1】:

上面的json格式不对。 正确的 json 格式是

[{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
}]

您可以通过JSONArray 获得此信息

【讨论】:

  • 没有。这不是一个 JSON - 这是一个文件中的几个 JSON。
【解决方案2】:

如果您可以依赖您描述的结构,那么这里最简单的解决方案是将其拆分为两个连续的 new line 字符,这将为您提供单独的对象然后可以通过传统方式解析,即。新的 JSONObject() ...

但是,如果您获取的文件不是生成的并且可能存在人为错误,那么自动化这样的过程真的很危险......更安全,但开发成本更高的是通过检查对来构建对象封闭{ } 字符..您可以从找到第一个左括号开始,然后每隔一个连续的左括号忽略一个关闭,直到您关闭根对象..这可以通过递归轻松完成

这距离防弹仍然,但潜在的错误应该通过JSONObject构造函数的最终解析来检测..

【讨论】:

    猜你喜欢
    • 2018-06-16
    • 2020-05-22
    • 2020-01-21
    • 2019-01-31
    • 1970-01-01
    • 2021-03-03
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多