De ce există caractere invalide în acest JSON? (Programare, Json, Validare)

user906153 a intrebat.

JSON-ul meu arată cam așa:

{
  "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"
   }]
}

Primesc o eroare „Caractere invalide găsite” atunci când validez acest lucru. Unde sunt caracterele invalide și cum pot face acest JSON valid?

4 răspunsuri
Marchah
{
"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"
    }
]
}

Validator JSON: http://jsonlint.com/

Editare: Explicare: atunci când deschideți un " trebuie să îl închizi pe aceeași linie. Deci trebuie să pui xml-ul pe o singură linie sau să îl scapi.

Comentarii

  • Acest lucru arată formarea corectă a/a pentru ca JSON-ul lui OP să funcționeze, dar nu explică nimic – de ce funcționează acesta și nu funcționează cel al lui OP? Citirea fișierului celălalt răspunsurile arată clar de ce este corect, dar acest răspuns ar trebui să fie de sine stătător. –  > Por Stephen P.
morkro

JSON acceptă doar șiruri de caractere de o singură linie.

O soluție de rezolvare ar fi:

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

Aveți, de asemenea, opțiunea de a înlocui pauzele de linie în
.

Andrew Arnold

Caracterele invalide sunt întreruperile de linie din elementul „Detail”. Va trebui să le scăpați. Ar trebui să funcționeze ceva asemănător cu soluția prezentată aici.

kumar

încercați acest lucru,

{
    "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"
        }
    ]
}

Cred că au existat unele caractere nedorite ascunse, cum ar fi linia următoare (pauze de linie) sau spații de tabulare etc., de aceea a dat eroare. asigurați-vă că cheia „Detalii” va fi pe o singură linie.