【发布时间】:2016-06-06 17:20:14
【问题描述】:
我知道这个问题已经被问过很多次了,我已经查看了很多示例和问题以及对此的答案。然而,即使看看我认为应该是正确的,我仍然从 org.json.JSONException 的 logcat 中收到错误:org.json.JSON.typeMismatch(JSON.java:100) 的值。我对如何从 json 中提取信息或 json 中的某些内容导致它发生有些困惑。这两个我都很难找到。
从这里开始是完整的 json
{
"data": "{\"haz\":[{\"id\":220121,\"rwn\":\"US-90 EAST\",\"dir\":0,\"cs\":\"MCCART ST\",\"lat\":29.777589,\"lon\":-95.284037,\"acc\":\"Minor Accident/Collision\",\"vi\":3,\"la\":\"Alternate Lanes\",\"mlb\":2,\"flb\":2,\"rlb\":0,\"hlb\":0,\"slb\":1,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 4:34:41 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Right Shoulder, Right Lane, Center Lane\",\"toa\":0,\"toi\":0}],\"accident\":[{\"id\":220116,\"rwn\":\"IH-10 KATY\",\"dir\":0,\"cs\":\"WESTGREEN BLVD\",\"lat\":29.78518,\"lon\":-95.73529,\"acc\":\"Major Accident/Collision\",\"vi\":1,\"la\":\"Alternate Lanes\",\"mlb\":2,\"flb\":0,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 3:40:24 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Left Lane, Center Lane\",\"toa\":2,\"toi\":1},{\"id\":220130,\"rwn\":\"IH-45 GULF\",\"dir\":4,\"cs\":\"SCARSDALE BLVD\",\"lat\":29.599,\"lon\":-95.1976,\"acc\":\"Minor Accident/Collision\",\"vi\":2,\"la\":\"Alternate Lanes\",\"mlb\":1,\"flb\":0,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 6:11:32 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Center Lane\",\"toa\":1,\"toi\":1},{\"id\":220129,\"rwn\":\"IH-45 GULF\",\"dir\":4,\"cs\":\"SCARSDALE BLVD\",\"lat\":29.599,\"lon\":-95.1976,\"acc\":\"Minor Accident/Collision\",\"vi\":2,\"la\":\"Alternate Lanes\",\"mlb\":0,\"flb\":0,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 6:06:19 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Unknown\",\"toa\":1,\"toi\":1},{\"id\":220127,\"rwn\":\"IH-45 NORTH\",\"dir\":4,\"cs\":\"N MAIN ST\",\"lat\":29.79018,\"lon\":-95.37202,\"acc\":\"Minor Accident/Collision\",\"vi\":2,\"la\":\"Alternate Lanes\",\"mlb\":1,\"flb\":0,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 5:45:21 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Left Lane\",\"toa\":1,\"toi\":1},{\"id\":220131,\"rwn\":\"IH-610 SOUTH LOOP\",\"dir\":0,\"cs\":\"SH-225\",\"lat\":29.7096,\"lon\":-95.2674,\"acc\":\"Major Accident/Collision\",\"vi\":2,\"la\":\"Alternate Lanes\",\"mlb\":2,\"flb\":0,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 6:18:55 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Right Lane, Center Lane\",\"toa\":1,\"toi\":1},{\"id\":220126,\"rwn\":\"SOUTH SAM HOUSTON TOLLWAY\",\"dir\":0,\"cs\":\"FUQUA\",\"lat\":29.60503,\"lon\":-95.47413,\"acc\":\"Major Accident/Collision\",\"vi\":2,\"la\":\"Alternate Lanes\",\"mlb\":1,\"flb\":0,\"rlb\":0,\"hlb\":0,\"slb\":1,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 5:44:54 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Left Shoulder, Left Lane\",\"toa\":1,\"toi\":1}],\"highwater\":[{\"id\":220123,\"rwn\":\"IH-610 NORTH LOOP\",\"dir\":3,\"cs\":\"IH-45 NORTH\",\"lat\":29.8132,\"lon\":-95.3752,\"acc\":\"Minor Accident/Collision\",\"vi\":0,\"la\":\"Alternate Lanes\",\"mlb\":0,\"flb\":0,\"rlb\":1,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 4:53:25 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Exit Ramp\",\"toa\":0,\"toi\":2},{\"id\":220118,\"rwn\":\"US-290 NORTHWEST\",\"dir\":0,\"cs\":\"FM-529\",\"lat\":29.8795,\"lon\":-95.569,\"acc\":\"Minor Accident/Collision\",\"vi\":0,\"la\":\"Alternate Lanes\",\"mlb\":0,\"flb\":1,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 4:12:17 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"1 Frontage Road Lane\",\"toa\":0,\"toi\":2},{\"id\":220124,\"rwn\":\"US-90 ALTERNATE\",\"dir\":0,\"cs\":\"Lane Dr\",\"lat\":29.573644,\"lon\":-95.773905,\"acc\":\"Minor Accident/Collision\",\"vi\":0,\"la\":\"Alternate Lanes\",\"mlb\":0,\"flb\":0,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 5:03:40 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Unknown\",\"toa\":0,\"toi\":2},{\"id\":220125,\"rwn\":\"US-90 ALTERNATE\",\"dir\":0,\"cs\":\"Chimney Rock Rd\",\"lat\":29.640602,\"lon\":-95.482381,\"acc\":\"Minor Accident/Collision\",\"vi\":0,\"la\":\"Alternate Lanes\",\"mlb\":0,\"flb\":0,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 5:06:48 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Unknown\",\"toa\":0,\"toi\":2}],\"ice\":null,\"lostload\":[{\"id\":220122,\"rwn\":\"IH-10 EAST\",\"dir\":3,\"cs\":\"FREEPORT BLVD\",\"lat\":29.7707,\"lon\":-95.1778,\"acc\":\"Minor Accident/Collision\",\"vi\":0,\"la\":\"Alternate Lanes\",\"mlb\":0,\"flb\":2,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 4:34:54 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"2 Frontage Road Lanes\",\"toa\":0,\"toi\":4}],\"roaddebris\":[{\"id\":220117,\"rwn\":\"US-290 NORTHWEST\",\"dir\":3,\"cs\":\"FM-529\",\"lat\":29.8369039,\"lon\":-95.4991506,\"acc\":\"Minor Accident/Collision\",\"vi\":0,\"la\":\"Alternate Lanes\",\"mlb\":0,\"flb\":2,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 4:11:35 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"2 Frontage Road Lanes\",\"toa\":0,\"toi\":5}],\"stall\":[{\"id\":220128,\"rwn\":\"IH-45 NORTH\",\"dir\":4,\"cs\":\"N MAIN ST\",\"lat\":29.79018,\"lon\":-95.37202,\"acc\":\"Major Accident/Collision\",\"vi\":1,\"la\":\"Center Lane\",\"mlb\":1,\"flb\":0,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 6:03:41 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Left Lane, Center Lane\",\"toa\":0,\"toi\":6},{\"id\":220129,\"rwn\":\"IH-45 GULF\",\"dir\":4,\"cs\":\"SCARSDALE BLVD\",\"lat\":29.599,\"lon\":-95.3586,\"acc\":\"Minor Accident/Collision\",\"vi\":2,\"la\":\"Alternate Lanes\",\"mlb\":0,\"flb\":0,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 6:06:19 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"Unknown\",\"toa\":0,\"toi\":6}],\"fire\":[{\"id\":220119,\"rwn\":\"BELTWAY 8-NORTH\",\"dir\":0,\"cs\":\"LEE RD\",\"lat\":29.9396,\"lon\":-95.3034,\"acc\":\"Minor Accident/Collision\",\"vi\":0,\"la\":\"Alternate Lanes\",\"mlb\":0,\"flb\":2,\"rlb\":0,\"hlb\":0,\"slb\":0,\"omb\":0,\"osb\":0,\"dc\":\"5/28/2014 4:22:56 AM\",\"dm\":\"12/31/9999 11:59:59 PM\",\"sum\":\"2 Frontage Road Lanes\",\"toa\":0,\"toi\":7}]}",
"error": 0,
"when": "6/6/2016 12:33:59 PM"}
对于解析,我尝试这样做
JSONObject reader = new JSONObject(results);
JSONObject data = reader.getJSONObject("data");
我相信“数据”是阅读器的JSONObject,它本身就充满了无数的JSONArray。这是尝试读取我认为是名为“data”的 JSON 对象时引发错误的地方
错误(仅 sn-p 显示为吐出整个 json 字符串)
org.json.JSONException: Value {"haz":[{"id":220121,"rwn":"US-90 EAST","dir":0,"cs":"MCCART ST","
at org.json.JSON.typeMismatch(JSON.java:100)
有人看到我在这里做错了吗?
这是我从回调函数获取错误信息的完整代码
IncidentsList incidentsList = new IncidentsList();
JSONObject reader = new JSONObject(results);
int error = reader.getInt("error");
//there should always be a value for errors
incidentsList.ERRORS = error == 1;
//no errors, continue
if(error == 0){
Log.i("jsonreader", "no errors, read data object");
JSONObject data = reader.getJSONObject("data");
Log.i("jsonreader", "read data object");
}
它永远不会超过 JSONObject data = reader.getJSONObject("data"); logcat 从不显示第二条 info 语句
谢谢
【问题讨论】:
-
你贴的两行代码是正确的。请在您尝试解析的地方发布更多代码。
-
刚刚注意到您的 json 无效。
-
请告诉我更多。我完全控制了 json。
-
我推荐这个网站以供将来检查:jsonlint.com
-
请看我的回答。