我有一个 JSON 字符串,我正在尝试使用以下代码将其解析为数组:
try {
String holder = getJSONString(getApplicationContext());
JSONArray JSONARR= new JSONArray(holder);
List<datatemp> dataList = new ArrayList<>();
for (int i = 0; i < JSONARR.length(); i++) {
JSONObject jsonObj = JSONARR.getJSONObject(i);
datatemp data = new datatemp();
data.ID = Integer.parseInt(jsonObj.getString("id"));
data.Open = Integer.parseInt(jsonObj.getString("Open"));
data.Close = Integer.parseInt(jsonObj.getString("Close"));
data.High = Integer.parseInt(jsonObj.getString("High"));
data.Low = Integer.parseInt(jsonObj.getString("Low"));
dataList.add(data);
}
} catch (JSONException e) {
Log.e("JSON_ERROR", "unexpected JSON exception", e);
}
但我不断收到以下错误:
type org.json.JSONObject 无法转换为 JSONArray
JSON 字符串如下所示:
"data": [
{
"id": "0",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
},
{
"id": "1",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
},
{
"id": "2",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
},
{
"id": "3",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
},
{
"id": "4",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
},
{
"id": "5",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
},
{
"id": "6",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
},
{
"id": "7",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
},
{
"id": "8",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
},
{
"id": "9",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
},
{
"id": "10",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
}
]
}
我正在尝试解析数据,以便以后可以在图表中显示它。我只是想将 JSON 解析为一个列表,以便以后可以将数据拆分为较小的列表(id、打开、关闭、高、低(,但我不确定是否有更好的方法。
虽然我缺少一些数据,但我可以假设出了什么问题:
您的 JSON 是:
{
"data" : [
{
"id": "0",
"Open": "1",
"Close": "1",
"High": "1",
"Low": "1"
}
]
}
因此,您的 JSON 包含一个包含对象数组的对象。 您正在尝试从根元素(即对象(创建 JSONArray。JSONArray JSONARR = new JSONArray(holder);
您可以解决更改从根目录导航到data
属性的代码的问题,如下所示:
JSONObject jsonObj = new JSONObject(holder);
JSONArray JSONARR = jsonObj.getJSONArray("data");
你可以看看这些链接,它们也帮助了我很多,但它是用 C# 的,所以你也可以在 java 中找到相同的库。
1-从 JSON 检索项目时获取"无法将 Newtonsoft.Json.Linq.JObject 转换为 Newtonsoft.Json.Linq.JToken">
2-在 C# 中读取和分析 Json 文件