使用org.JSON解析Java中JSONArray中的内部JSON文件
我希望能够解析一个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"
[
{
"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库似乎没有这个功能
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());