/ / Praca z JSON w C # .NET 3.5 - c #, .net, json, file-io

Praca z JSON w C # .NET 3.5 - c #, .net, json, file-io

Znalazłem metodę pomocnika, która pozwala mi przekonwertować obiekt do JSONM i JSON na obiekt. Teraz czytam w pliku json, który wygląda mniej więcej tak:

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

Teraz, gdy mogę przekonwertować JSON reprezentuje 1 obiekt, chciałbym przejść do konwersji tego w wielu obiektach z C # .NET 3.5?

Odpowiedzi:

7 dla odpowiedzi № 1

Musisz użyć DataContractJsonSerializer któryznajduje się w przestrzeni nazw System.Runtime.Serialization.Json. Oznacz swoją klasę za pomocą atrybutu [DataContract], klas kolekcji z atrybutem [CollectionDataContract] i właściwości z atrybutem [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; }
}

Oto klasa pomocnicza do serializowania (Do) i deserializacji (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;
}
}

Weź powyższy json i wyślij go do metody From w powyższej klasie jsonHelper

People peeps = jsonHelper.From<People>(input);

5 dla odpowiedzi nr 2

Pobieranie Json.NET. To obsługuje JSON lepiej niż cokolwiek innego, co widziałem dla .NET. Myślę, że serializator Json zrobi to, o co prosisz.

Spójrz także na związane z tym pytania po prawej stronie. Wierzę, że znajdziesz tam odpowiedź.