Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用org.JSON解析Java中JSONArray中的内部JSON文件_Java_Json_File_Parsing - Fatal编程技术网

使用org.JSON解析Java中JSONArray中的内部JSON文件

使用org.JSON解析Java中JSONArray中的内部JSON文件,java,json,file,parsing,Java,Json,File,Parsing,我希望能够解析一个JSON文件,其结构如下: [ { "id": 1, "name": { "first": "name", "secound": "name", "last": "name" }, "skills": [ "python", "javascript" ], "otherInfo": { "something": 45, "something2"

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

[
  {
    "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...
]
看起来像

我很确定我有办法把它转换成我想要的格式,但是我在从文件中读取数据时遇到了困难

我面临的两个主要问题是:

  • 从罐子里读
  • 大多数示例都使用json.simple,而我使用的json库似乎没有这个功能
我在网上尝试了一些例子,并在网上给出了一些答案 但是没有运气,最大的问题是他们都给出了读取外部文件的示例,而我正在尝试读取一个打包在jar中的文件

我的项目树:

MyProject
      L src
          L myPackage
                  L MyClass.java
                  L MyJsonFile.json
我猜最接近实际效果的是(从上面的链接):

但这似乎只是一个错误:
org.json.JSONException:JSONArray初始值应为字符串、集合或数组。

提前谢谢

问题是将只接受
字符串
集合
数组
,但您正在尝试传递
输入流
对象。错误消息也会这样说

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

因此,首先将
InputStream
转换为
String

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

JSONArray myJSONArray = new JSONArray(sb.toString());

在这里之后,您可以使用for循环迭代
JSONArray
,就像

在我看来,您应该删除JSON格式/映射的内容,并提出关于读取jar文件的问题-如果问题尽可能有针对性,您将得到更多帮助。这非常有效!非常感谢你!我很抱歉我犯了这样一个愚蠢的错误哈哈。。。
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 myJSONArray = new JSONArray(sb.toString());