Это продолжение моего вопроса здесь .Я пытаюсь понять, как сериализовать некоторые JSON.Я использую метод JSON.stringify () из json2.js для преобразования массива JSON в строковое значение, с которым я могу работать на стороне сервера.Мой JSON изначально выглядит так:
var myItems = {
"data": [
{"id":1, "type":2, "name":"book"},
{"id":2, "type":3, "name":"dvd"},
{"id":3, "type":4, "name":"cd"}
]
};
После того, как я использую JSON.stringify, я заметил, что значение на сервере выглядит следующим образом:
{"data":[{"id":1,"type":2,"name":"book"},{"id":2,"type":"3","name":"dvd"},{"id":3,"type":4,"name":"cd"}]}
В попыткесериализовав этот JSON в объекты C #, с которыми я могу работать, я написал следующий код:
public MyItems GetMyItems()
{
MyItems items = new MyItems();
string json = serializedJsonInHiddenHtmlElement.Value;
if (json.Length > 0)
{
items = Deserialize<MyItems>(json);
}
return items;
}
public static T Deserialize<T>(string json)
{
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
return (T)serializer.ReadObject(ms);
}
}
Классы, связанные с моими типами, определяются следующим образом:
[DataContract(Name="myItems")]
internal class MyItems
{
[DataMember(Name = "data")]
public string[] Data { get; set; }
}
[DataContract(Name="myItem")]
internal class MyItem
{
[DataMember(Name = "id")]
public string ID { get; set; }
[DataMember(Name = "type")]
public string Type { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
}
Когда я выполняюэтот код, строка с надписью return (T)serializer.ReadObject(ms);
Я получаю сообщение об ошибке:
There was an error deserializing the object of type AppNamespace.MyItems. End element 'item' from namespace '' expected. Found element 'id' from namespace ''.
Что я делаю не так?Я не могу пройти через это.Может кто-нибудь, пожалуйста, укажите мне в правильном направлении?Спасибо!