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

use*_*153 2 validation json

我的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"
   }]
}
Run Code Online (Sandbox Code Playgroud)

验证时,我收到"发现无效字符"错误.无效字符在哪里?如何使此JSON有效?

mor*_*kro 5

JSON只接受单行字符串.

解决方法是:

"Detail": [
    "<root>",
    ",<key keyname=\"state\">3</key>", 
    "<key keyname=\"oldState\">1</key>",        
    "<key keyname=\"currency\"></key>",
    "<key keyname=\"denomination\"></key></root>"
], 
Run Code Online (Sandbox Code Playgroud)

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


And*_*old 5

无效字符是"Detail"元素中的换行符.你需要逃脱它们.像这里提出的解决方案应该有效.


Mar*_*hah 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"
    }
]
}
Run Code Online (Sandbox Code Playgroud)

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

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