it-swarm.com.de

wie man mit json object in c # arbeitet

Ich arbeite mit einem Json, der von einer API stammt. Ich rede hier von:

{
  "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
    }
  ]
}

Ich kann bereits den Wert von popularity zurückgeben.

Als Beispiel muss ich wissen, wie ich auf den Wert von name zugreifen kann und welche name es ist?

Ich habe auch versucht, es in ein Array zu konvertieren, funktionierte aber nicht oder ich habe etwas falsch gemacht.

Filmklasse:

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;

}

Was ich bisher gemacht habe:

@{
  var arr = Item.production_companies.ToString().Substring(1, (Item.production_companies.ToString().Length - 2)).ToArray();
  foreach(var a in arr) {
    @a.name
  }
}
7
Hooman

Nachdem Sie einen Json-String erhalten haben, müssen Sie ihn deserialisieren. Verwenden Sie diese Site, um Ihr Modell zu generieren

http://json2csharp.com/

sie werden einige Klassen erhalten

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; }
}

dann kannst du anrufen 

var json = "...yout json string..."
RootObject obj = JsonConvert.DeserializeObject<RootObject >(json);

und Sie können die zurückgewonnenen Daten problemlos verwenden

14
Grappachu

Definieren Sie zuerst die Klassen wie folgt:

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; }
}

Sie können dann jsonSerializer verwenden, um Ihr JSON in ein Klassenobjekt zu konvertieren 

    string jsonInput="your Json string"; 

    JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
    Item item= jsonSerializer.Deserialize<Item>(jsonInput)

Nun können Ihre Daten problemlos von einem Objektelement abgerufen werden, in etwa wie diesem 

  foreach (var productioncompany in item.Production_Companies)
    {
       productioncompany.Name;  
       productioncompany.id;
    }
3
Maverick

Am einfachsten ist es, eine Klasse zu erstellen, die zu Ihrem JSON passt, die JSON deserialisieren und anschließend über das erstellte Objekt auf die Eigenschaften zugreifen.

Zum Beispiel: 

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;}
}

Dann deserialisieren Sie mit JSON.Net

  var myObject = JsonConvert.DeserializeObject<Companies>(jsonString);

Und greifen Sie auf die Eigenschaften zu 

foreach (var company in myObject.Production_Companies)
{
   company.Name;  //do something...
}
0
Bojan B