如何在c#中使用json对象

Hoo*_*man 8 c# indexing json object key-value

我正在使用一个来自API的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
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我已经可以返回值了 popularity

作为一个例子,我需要知道如何获取它的值name和name它是什么?

我也尝试将它转换为数组,但没有工作或我做错了什么.

电影课:

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;

}
Run Code Online (Sandbox Code Playgroud)

到目前为止我做了什么:

@{
  var arr = Item.production_companies.ToString().Substring(1, (Item.production_companies.ToString().Length - 2)).ToArray();
  foreach(var a in arr) {
    @a.name
  }
}
Run Code Online (Sandbox Code Playgroud)

Gra*_*chu 19

获得json字符串后,需要对其进行反序列化.使用此站点生成模型

http://json2csharp.com/

你会得到一些类似的课程

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; }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以打电话

var json = "...yout json string..."
RootObject obj = JsonConvert.DeserializeObject<RootObject >(json);
Run Code Online (Sandbox Code Playgroud)

并且您可以轻松地使用数据转发

  • 您提到的网站 http://json2csharp.com/ 很棒,可以节省手动编写大量代码,尤其是在使用 QuickType 选项时。 (3认同)