首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用JSONArray解析Java中的内部JSON文件

用JSONArray解析Java中的内部JSON文件
EN

Stack Overflow用户
提问于 2019-11-14 03:56:49
回答 1查看 373关注 0票数 1

我希望能够解析一个JSON文件,该文件的结构如下:

代码语言:javascript
运行
复制
[
  {
    "id": 1,
    "name": {
      "first": "name",
      "secound": "name",
      "last": "name"
    },
    "skills": [
      "python",
      "javascript"
    ],
    "otherInfo": {
      "something": 45,
      "something2": 49
    }
  },
  {
    "id": 2,
    "name": {
      "first": "name",
      "secound": "name",
      "last": "name"
    },
    "skills": [
      "python",
      "javascript"
    ],
    "otherInfo": {
      "something": 45,
      "something2": 49
    }
  }
etc...
]

看上去像

代码语言:javascript
运行
复制
array(
    [0] => array(
                   0 => "id"
                   1 => "firstname"
                   2 => "otherData"
                ),
    [1] => array(
                   0 => "id"
                   1 => "firstname"
                   2 => "otherData"
                ),
etc...
)

我很确定我对如何将它转换成我想要的格式有一个想法,但是我在实际读取文件中的数据时遇到了困难。

我有以下两个主要问题:

  • 从罐子里读出来。
  • 大多数示例都使用了json.simple,而我使用的json库似乎没有这一点。

我在网上尝试了一些例子,在这个职位上给出了几个答案,但没有什么好运气--最大的问题是,它们都给出了读取外部文件的示例,而我正在尝试读取一个打包在jar中的示例。

我的项目树:

代码语言:javascript
运行
复制
MyProject
      L src
          L myPackage
                  L MyClass.java
                  L MyJsonFile.json

我猜最接近的事情就是这个(从上面的链接):

代码语言:javascript
运行
复制
import org.json.JSONArray;

//code

JSONArray myJSONArray = new JSONArray(Main.class.getResourceAsStream("myFile.json"));

但这似乎只会引发一个错误:org.json.JSONException: JSONArray initial value should be a string or collection or array.

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-14 05:04:29

问题是org.json.JSONArray只接受StringCollectionArray,但是您正在尝试传递InputStream对象。这也是错误信息所说的。

org.json.JSONException: JSONArray初始值应该是字符串、集合或数组

因此,首先将InputStream转换为String

代码语言:javascript
运行
复制
InputStream  inputStream = Main.class.getResourceAsStream("myFile.json");

InputStreamReader isReader = new InputStreamReader(inputStream);

BufferedReader reader = new BufferedReader(isReader);
  StringBuffer sb = new StringBuffer();
  String str;
  while((str = reader.readLine())!= null){
     sb.append(str);
  }

然后将其转换为JSONArray

代码语言:javascript
运行
复制
JSONArray myJSONArray = new JSONArray(sb.toString());

在这里之后,您可以使用for循环来迭代JSONArray,比如这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58849159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档