Работа с JSON в C # .NET 3.5 - PullRequest
       1

Работа с JSON в C # .NET 3.5

2 голосов
/ 29 января 2011

Я нашел некоторый вспомогательный метод, который позволяет мне преобразовывать объект в JSONM и JSON в объект.Сейчас я читаю в файле json, который выглядит примерно так:

/************************************************************************/
/* Coments Here *********************************************************/
/************************************************************************/
//more comments  
[{
  "Id": 1,
  "Name": "HP Up"
},
{
  "Id": 2,
  "Name": "Regeneration"
}]

Теперь, когда я могу конвертировать JSON, представляющий объект 1, я бы хотел конвертировать это в несколько объектов с помощью C # .NET 3.5?

Ответы [ 2 ]

8 голосов
/ 29 января 2011

Вам необходимо использовать DataContractJsonSerializer, который находится в пространстве имен System.Runtime.Serialization.Json.Пометьте свой класс атрибутом [DataContract], классы коллекции - атрибутом [CollectionDataContract], а свойства - атрибутом [DataMember].

[CollectionDataContract]
public class People : List<Person>
{

}

[DataContract]
public class Person
{
     public Person() { }

     [DataMember]
     public int Id{ get; set; }

     [DataMember]
     public string Name { get; set; }
}

Вот вспомогательный класс для сериализации (To) и десериализации (From)

using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

public class jsonHelper
{
    public static string To<T>(T obj)
    {
        string retVal = null;
        System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
        using (MemoryStream ms = new MemoryStream())
        {
         serializer.WriteObject(ms, obj);
         retVal = Encoding.Default.GetString(ms.ToArray());
        }

        return retVal;
    }

    public static T From<T>(string json)
    {
        T obj = Activator.CreateInstance<T>();
        using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
        {
         System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
         obj = (T)serializer.ReadObject(ms);
        }

        return obj;
    }
}

Итак, возьмите свой json выше и отправьте его методу From в классе jsonHelper выше

People peeps = jsonHelper.From<People>(input);
5 голосов
/ 30 января 2011

Скачать Json.NET . Это обрабатывает JSON лучше, чем все остальное, что я видел для .NET. Я думаю, что сериализатор Json сделает то, что вы просите.

Кроме того, взгляните на соответствующие вопросы справа. Я верю, что вы найдете ответ там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...