Din fericire, am folosi Newtonsoft JSON biblioteca.
De exemplu mi-ar crea o JObject
din o .NET obiect, în acest caz, un exemplu de Excepție (s-ar putea sau nu ar putea fi o subclasă)
if (result is Exception)
var jobjectInstance = JObject.FromObject(result);
acum știu că biblioteca poate deserialize text JSON (adică un șir de caractere) pentru un obiect
// only works for text (string)
Exception exception = JsonConvert.DeserializeObject<Exception>(jsontext);
dar ceea ce caut este:
// now i do already have an JObject instance
Exception exception = jobjectInstance.????
Ei bine, este clar că pot pleca de pe JObject înapoi la text JSON și de a folosi apoi deserialize funcționalitate, dar care pare cu spatele la mine.
În conformitate cu acest post, l's mult mai bine acum:
// pick out one album
JObject jalbum = albums[0] as JObject;
// Copy to a static Album instance
Album album = jalbum.ToObject<Album>();
Documentație: Convert JSON de la un Tip
Din documentatie am gasit asta
JObject o = new JObject(
new JProperty("Name", "John Smith"),
new JProperty("BirthDate", new DateTime(1983, 3, 20))
);
JsonSerializer serializer = new JsonSerializer();
Person p = (Person)serializer.Deserialize(new JTokenReader(o), typeof(Person));
Console.WriteLine(p.Name);
Clasa definiția de "Persoană" ar trebui să fie compatibil cu următoarele:
class Person {
public string Name { get; internal set; }
public DateTime BirthDate { get; internal set; }
}
Edit
Dacă utilizați o versiune recentă de JSON.net și don't nevoie personalizate serializare, vă rugăm să consultați TienDo's răspunsul de mai sus (sau mai jos, dacă upvote mine :P ), care este mult mai concis.
Prea târziu, doar în cazul în care cineva este în căutarea pentru un alt mod:
void Main()
{
string jsonString = @"{
'Stores': [
'Lambton Quay',
'Willis Street'
],
'Manufacturers': [
{
'Name': 'Acme Co',
'Products': [
{
'Name': 'Anvil',
'Price': 50
}
]
},
{
'Name': 'Contoso',
'Products': [
{
'Name': 'Elbow Grease',
'Price': 99.95
},
{
'Name': 'Headlight Fluid',
'Price': 4
}
]
}
]
}";
Product product = new Product();
//Serializing to Object
Product obj = JObject.Parse(jsonString).SelectToken("$.Manufacturers[?(@.Name == 'Acme Co' && @.Name != 'Contoso')]").ToObject<Product>();
Console.WriteLine(obj);
}
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}