Je travaille avec un json qui provient d'une API, voici ce dont je parle:
{
"popularity": 3.518962,
"production_companies": [
{
"name": "value1",
"id": 4
},
{
"name": "value2",
"id": 562
},
{
"name": "value13",
"id": 14654
},
{
"name": "value4",
"id": 19177
},
{
"name": "value5",
"id": 23243
}
]
}
Je peux déjà retourner la valeur de popularity
A titre d'exemple, j'ai besoin de savoir comment accéder à la valeur name
et à quelle name
il s'agit.
J'ai également essayé de le convertir en tableau, mais cela n'a pas fonctionné ou j'ai commis une erreur.
Classe de film:
public class Movie {
public string popularity {get; set;}
public object production_companies {get; set;}
public Movie GetBasic(string id) {
string json = @"{
"popularity": 3.518962,
"production_companies": [
{
"name": "value1",
"id": 4
},
{
"name": "value2",
"id": 562
},
{
"name": "value13",
"id": 14654
},
{
"name": "value4",
"id": 19177
},
{
"name": "value5",
"id": 23243
}
]
}";
Movie Data = JsonConvert.DeserializeObject<Movie>(json);
return Data;
}
Ce que j'ai fait jusqu'à présent:
@{
var arr = Item.production_companies.ToString().Substring(1, (Item.production_companies.ToString().Length - 2)).ToArray();
foreach(var a in arr) {
@a.name
}
}
Après avoir obtenu une chaîne JSON, vous devez la désérialiser. Utilisez ce site pour générer votre modèle.
vous aurez des cours comme
public class ProductionCompany
{
public string name { get; set; }
public int id { get; set; }
}
public class RootObject
{
public double popularity { get; set; }
public List<ProductionCompany> production_companies { get; set; }
}
alors vous pouvez appeler
var json = "...yout json string..."
RootObject obj = JsonConvert.DeserializeObject<RootObject >(json);
et vous pouvez utiliser les données récupérées facilement
Définissez d'abord les classes comme ci-dessous:
public class ProductionCompany
{
public string name { get; set; }
public int id { get; set; }
}
public class Item
{
public double popularity { get; set; }
public List<ProductionCompany> production_companies { get; set; }
}
Vous pouvez ensuite utiliser jsonSerializer pour convertir votre JSON en objet de classe.
string jsonInput="your Json string";
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
Item item= jsonSerializer.Deserialize<Item>(jsonInput)
Maintenant, vos données peuvent facilement être récupérées à partir d'un élément d'objet, quelque chose comme ceci
foreach (var productioncompany in item.Production_Companies)
{
productioncompany.Name;
productioncompany.id;
}
Le moyen le plus simple consiste à créer une classe qui correspond à votre JSON, à désérialiser le JSON, puis à accéder aux propriétés via l'objet créé.
Par exemple:
public class Companies(){
public double Popularity { get; set; }
public List<ProductionCompany> Production_Companies { get;set; }
public Companies(){
Production_Companies = new List<ProductionCompany>();
}
}
public class ProductionCompany(){
public string Name {get;set;}
public int Id {get;set;}
}
Ensuite, vous désérialisez avec JSON.Net
var myObject = JsonConvert.DeserializeObject<Companies>(jsonString);
Et accéder aux propriétés
foreach (var company in myObject.Production_Companies)
{
company.Name; //do something...
}