JSON.net возврат искаженного JSON
-
21-08-2019 - |
Вопрос
Я использую json.net для анализа объектов и доставки их в созданный мной веб-сервис.Объекты являются LINQ-объектами.Когда я обращаюсь к этому веб-сервису с помощью jQuery, он неправильно анализирует JSON.Кажется, что-то не так с форматированием..
Строка JSON, которую я получаю, - это:
[{"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":[]
}
]
}]
У кого-нибудь есть подсказки, почему это не работает?
Решение
Реальная проблема здесь заключалась в том, что этот JSON был встроен в XML-тег.Я решил проблему, проанализировав JSON-строку с помощью этого анализатора: http://www.json.org/js.html
Конечно, это не идеально, поскольку jQuery должен сделать это за меня, но пока я не найду способ для .NET-webservices возвращать необработанную JSON-строку, не встроенную в XML-тег, это решение работает =)
Другие советы
Я предполагаю, что это проблема с кодировкой, что, если вы удалите это из своей записи?
"resourcename":"Rødblyant 1"
Убедитесь, что вы работаете с UTF-8 с обеих сторон.Я предполагаю, что либо вы кодируете строку, используя кодировку по умолчанию (например, windows1252), либо принимающая сторона делает что-то подобное.
Помните, что JSON должен быть в формате UTF-8, UTF-16 (ФАЙЛ или BE) или UTF-32 (ФАЙЛ или BE).
Чтобы проверить это, избавьтесь от всех å
и ø
персонажей и посмотреть, сработает ли это.Если это так, то это определенно кодирование с той или другой стороны.