JSON.net retornando JSON malformada
-
21-08-2019 - |
Pergunta
Eu estou usando json.net para objetos de análise e entregá-los a um webservice que eu fiz. Os objetos são LINQ-objetos. Quando eu acessar esta webservice com JQuery, não analisar o JSON corretamente. Parece haver algo de errado com a formatação ..
O JSON-string que eu vejo é esta:
[{"typeid":1,
"typename":"binders",
"description":"test",
"RESOURCEs":
[{"resourceid":4,
"resourcename":"Binders 1",
"description":"Pakke med hele fire binders!!!",
"typeid":1,
"RESERVATIONLINEs":[]
},
{"resourceid":10,
"resourcename":"xxx",
"description":"xxx",
"typeid":1,
"RESERVATIONLINEs":[]
}
]
},
{"typeid":2,
"typename":"blyant",
"description":"også dyrt",
"RESOURCEs":
[{"resourceid":5,
"resourcename":"Gråblyant 1",
"description":"Fin og grå",
"typeid":2,
"RESERVATIONLINEs":[]
},
{"resourceid":6,
"resourcename":"Rødblyant 1",
"description":"Må spisses ofte",
"typeid":2,
"RESERVATIONLINEs":[]
}
]
},
{"typeid":4,
"typename":"Penn",
"description":"tester",
"RESOURCEs":
[{"resourceid":7,
"resourcename":"Penn 1",
"description":"Blå og fin",
"typeid":4,
"RESERVATIONLINEs":[]
},
{"resourceid":11,
"resourcename":"xxx",
"description":"xxx",
"typeid":4,
"RESERVATIONLINEs":[]
}
]
},
{"typeid":5,
"typename":"Kajakk",
"description":"Dette er en type båt",
"RESOURCEs":
[{"resourceid":1,
"resourcename":"Havkajakk 1",
"description":"FOr havbruk",
"typeid":5,
"RESERVATIONLINEs":[]
},
{"resourceid":2,
"resourcename":"Havkajakk 2",
"description":"For havbruk",
"typeid":5,
"RESERVATIONLINEs":[]
}
]
},
{"typeid":6,
"typename":"3G-modem",
"description":"Fra NetCom",
"RESOURCEs":
[{"resourceid":3,
"resourcename":"3G-modem 1",
"description":"Gammelt og ustabilg",
"typeid":6,
"RESERVATIONLINEs":[]
},
{"resourceid":12,
"resourcename":"xxx",
"description":"xxx",
"typeid":6,
"RESERVATIONLINEs":[]
}
]
},
{"typeid":7,
"typename":"Minnepinne",
"description":"på 1 KB",
"RESOURCEs":
[{"resourceid":8,
"resourcename":"Minnepinne 1",
"description":"1 KB (!)",
"typeid":7,
"RESERVATIONLINEs":[]
},
{"resourceid":9,
"resourcename":"Minnepinne 2",
"description":"20 PB",
"typeid":7,
"RESERVATIONLINEs":[]
}
]
}]
Alguém tem uma idéia por que isso não está funcionando?
Solução
O problema real aqui foi que este JSON foi incorporado em um XML-tag. Eu resolvi o problema ao analisar o JSON-string usando este analisador: http://www.json.org /js.html
De cource este não é o ideal, como JQuery deve fazer isso por mim, mas até que eu encontrar uma maneira para .net-webservices para retornar o JSON-corda crua, não incorporado num XML-tag, esta solução funciona =)
Outras dicas
Eu acho que este é um problema de codificação, o que se você remover esta de seu registro?
"resourcename":"Rødblyant 1"
Certifique-se de que você está trabalhando com UTF-8 em ambos os lados. Meu palpite é que ou você está codificando a string usando a codificação padrão (como Windows1252), ou o fim de recepção está fazendo algo similar.
Recorde que JSON deve ser em UTF-8, UTF-16 (LE ou BE), ou UTF-32 (LE ou BE).
Para testar isso, se livrar de todos os personagens å
e ø
e ver se funciona. Se assim for, é definitivamente codificação de um lado ou do outro.