【问题标题】:Error in Creating JSON object创建 JSON 对象时出错
【发布时间】:2015-11-03 07:54:03
【问题描述】:

我得到一个 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)

请帮我解决这个问题。

【问题讨论】:

  • 字符串不是要转成json的形式
  • 从 JSON 中删除一个接一个节点,直到它有效。然后你会发现哪里出了问题。

标签: java json web-services rest


【解决方案1】:

有几个错误。

  • [ 之后应该是逗号分隔值的列表,但"requestId" 之后有一个冒号。您可能打算将第 1 行的 [ 设为 {

  • 鉴于上一期,您可能希望在"82334-adf86d-8bac8ef-289c" 后面加一个逗号

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

【讨论】:

    【解决方案2】:

    问题出在: ... “requestId”:“82334-adf86d-8bac8ef-289c” 事件:...

    您忘记了一些标点符号: ... "requestId" : "82334-adf86d-8bac8ef-289c", “事件”:......

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

    【讨论】:

      【解决方案3】:

      字符串应该是这样的;

      {"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 之后还必须有关闭 } ]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-16
        • 1970-01-01
        • 2021-05-19
        • 2015-01-20
        • 2020-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多