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 № 1Musisz 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ź.