我的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有效?
答案 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;密钥将在单行中