为什么这个JSON中有无效字符?

时间:2014-07-31 17:03:16

标签: json validation

我的JSON看起来像这样:

{
  "Master" : {
    "Major" : "S",
    "Minor" : "E",
    "IPAddress" : "0.0.0.0",
    "Detail":"<root>
               <key keyname=\"state\">3</key>   
               <key keyname=\"oldState\">1</key>        
               <key keyname=\"currency\"></key>
               <key keyname=\"denomination\"></key></root>",    
    "SourceCreateDate" : "2014-04-03T14:02:57.182+0200"
   },
   "Messages" : [{
    "MessageCode" : "0",                    
    "MessageType" : "8"
   }]
}

我在验证时遇到“找到无效字符”错误。无效字符在哪里?如何使此JSON有效?

4 个答案:

答案 0 :(得分:5)

JSON只接受单行字符串。

解决方法是:

"Detail": [
    "<root>",
    ",<key keyname=\"state\">3</key>", 
    "<key keyname=\"oldState\">1</key>",        
    "<key keyname=\"currency\"></key>",
    "<key keyname=\"denomination\"></key></root>"
], 

您还可以选择将换行符替换为\n

答案 1 :(得分:5)

无效字符是&#34;详细信息&#34;中的换行符。元件。你需要逃脱它们。提交的解决方案here应该有效。

答案 2 :(得分:5)

{
"Master": {
    "Major": "S",
    "Minor": "E",
    "IPAddress": "0.0.0.0",
    "Detail": "<root><key keyname=\"state\">3</key><key keyname=\"oldState">1</key><key keyname=\"currency\"></key><key keyname=\"denomination\"></key></root>",
    "SourceCreateDate": "2014-04-03T14:02:57.182+0200"
},
"Messages": [
    {
        "MessageCode": "0",
        "MessageType": "8"
    }
]
}

JSON验证器:http://jsonlint.com/

编辑:解释:当您打开"时,需要在同一行上关闭它。所以你必须将你的xml放在一行或逃避它。

答案 3 :(得分:0)

试试这个,

{
    "Master": {
        "Major": "S",
        "Minor": "E",
        "IPAddress": "0.0.0.0",
        "Detail": "<root><key keyname=\"state\">3</key><key keyname=\"oldState\">1</key><key keyname=\"currency\"></key><key keyname=\"denomination\"></key></root>",
        "SourceCreateDate": "2014-04-03T14:02:57.182+0200"
    },
    "Messages": [
        {
            "MessageCode": "0",
            "MessageType": "8"
        }
    ]
}

我认为有一些隐藏的垃圾字符,如下一行(换行符)或制表符空格等。这就是为什么它会给出错误。所以要确保&#34;细节&#34;密钥将在单行中