我希望能够解析一个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...
]
看上去像
array(
[0] => array(
0 => "id"
1 => "firstname"
2 => "otherData"
),
[1] => array(
0 => "id"
1 => "firstname"
2 => "otherData"
),
etc...
)
我很确定我对如何将它转换成我想要的格式有一个想法,但是我在实际读取文件中的数据时遇到了困难。
我有以下两个主要问题:
我在网上尝试了一些例子,在这个职位上给出了几个答案,但没有什么好运气--最大的问题是,它们都给出了读取外部文件的示例,而我正在尝试读取一个打包在jar中的示例。
我的项目树:
MyProject
L src
L myPackage
L MyClass.java
L MyJsonFile.json
我猜最接近的事情就是这个(从上面的链接):
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.
提前感谢!
发布于 2019-11-14 05:04:29
问题是org.json.JSONArray只接受String
、Collection
或Array
,但是您正在尝试传递InputStream
对象。这也是错误信息所说的。
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
,比如这里
https://stackoverflow.com/questions/58849159
复制相似问题