创建JSON对象时出错

时间:2015-11-03 07:54:04

标签: java json web-services rest

我将JSON数组作为字符串值获取,我需要使用它创建一个JSON对象。数组代码是这样的。

{"eventsList" : [
    "requestId" : "82334-adf86d-8bac8ef-289c"
    events:[
        {
            "eventType" : "receiveLocation_Event", 
            "externalId" : "973af2f8-820b-457b-89c2", 
            "description" : "Test Event",
            "whenOccurred" : "06-Aug-2013 07.15.01.0 AM",
            "partnerId" : "cecdbd94-ac60-4db0-b7f2", 
            "tagsAndValues" : { 
                 "locationAccuracy" : "10",
                 "attr2" : "value2"
            },
            "count" : "2" 
         },
         {
            "eventType" : "SEND_SMS_sendSmsEvent",
            "externalId" : "45af4f8-87-4f42b-832abc",
            "description" : "Another Test Event",
            "whenOccurred" : "06-Aug-2013 08.16.01.0 AM",
            "partnerId" : "cecdbd94-ac60-4db0-b7f2",
            "tagsAndValues" : { 
                  "messageLength" : "135",
                  "attrX" : "valueX"
             }, 
            "count" : "1" 
          }
    ]

 }

]
}

我尝试使用下面的代码行

创建一个JSON对象
SONObject jsonObject = new JSONObject(string);

我在运行时遇到错误。

org.json.JSONException: Expected a ',' or ']' at character 35
    at org.json.JSONTokener.syntaxError(JSONTokener.java:413)
    at org.json.JSONArray.<init>(JSONArray.java:143)
    at org.json.JSONTokener.nextValue(JSONTokener.java:351)
    at org.json.JSONObject.<init>(JSONObject.java:206)
    at org.json.JSONObject.<init>(JSONObject.java:420)

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:2)

有几个错误。

  • [之后,预计会出现以逗号分隔的值列表,但"requestId"后面会有冒号。您可能意味着第1行的[{

  • 鉴于上一期,您可能需要"82334-adf86d-8bac8ef-289c"之后的逗号

如果您将文本放入在线JSON格式化程序和验证程序(例如this one),它将指出您的所有错误。

答案 1 :(得分:1)

问题在这里: ... &#34;的requestId&#34; :&#34; 82334-adf86d-8bac8ef-289c&#34;     事件:...

你忘记了一些标点符号: ... &#34;的requestId&#34; :&#34; 82334-adf86d-8bac8ef-289c&#34;,  &#34;事件&#34;:......

使用此代替这是JSON语法。所有键都是字符串。

答案 2 :(得分:1)

String应该是这样的;

{"eventsList" : [
    {"requestId" : "82334-adf86d-8bac8ef-289c"},
   { "events":[
        {
            "eventType" : "receiveLocation_Event", 
            "externalId" : "973af2f8-820b-457b-89c2", 
            "description" : "Test Event",
            "whenOccurred" : "06-Aug-2013 07.15.01.0 AM",
            "partnerId" : "cecdbd94-ac60-4db0-b7f2", 
            "tagsAndValues" : { 
                 "locationAccuracy" : "10",
                 "attr2" : "value2"
            },
            "count" : "2" 
         },
         {
            "eventType" : "SEND_SMS_sendSmsEvent",
            "externalId" : "45af4f8-87-4f42b-832abc",
            "description" : "Another Test Event",
            "whenOccurred" : "06-Aug-2013 08.16.01.0 AM",
            "partnerId" : "cecdbd94-ac60-4db0-b7f2",
            "tagsAndValues" : { 
                  "messageLength" : "135",
                  "attrX" : "valueX"
             }, 
            "count" : "1" 
          }
    ]

 }
 ]
}

requestId和event必须是这样的:{"requestId" : "82334-adf86d-8bac8ef-289c"}, { "events": 关闭内部JSONArray后,必须关闭}