如何为json设置类?

时间:2018-11-04 13:08:14

标签: c# json

我正在使用opentdb.com api,并且不知道如何访问此json中的数据:

{  
   "response_code":0,
   "results": [  
      {  
         "category":"Animals",
         "type":"multiple",
         "difficulty":"easy",
         "question":"What is the scientific name for modern day humans?",
         "correct_answer":"Homo Sapiens",
         "incorrect_answers":[  
            "Homo Ergaster",
            "Homo Erectus",
            "Homo Neanderthalensis"
         ]
      },
      {  
         "category":"Entertainment: Cartoon & Animations",
         "type":"multiple",
         "difficulty":"easy",
         "question":"Who voices for Ruby in the animated series RWBY?",
         "correct_answer":"Lindsay Jones",
         "incorrect_answers":[  
            "Tara Strong",
            "Jessica Nigri",
            "Hayden Panettiere"
         ]
      }
   ]
}

我正在使用Newtonsoft.Json,我仅用1个问题进行了尝试,但是却收到一条错误消息,提示键值是错误的。.

class Trivia
{

    public Trivia(string json)
    {
        JObject jObject = JObject.Parse(json);
        JToken jresults = jObject["results"];
        category = (string)jresults["category"];
        type = (string)jresults["type"];
        difficulty = (string)jresults["difficulty"];
        question = (string)jresults["question"];
        correct_answer = (string)jresults["correct_answer"];

        incorrect_answers = jresults["incorrect_answers"].ToArray();
    }

    public string category { get; set; }
    public string type { get; set; }
    public string difficulty { get; set; }
    public string question { get; set; }
    public string correct_answer { get; set; }
    public Array incorrect_answers { get; set; }
}

1 个答案:

答案 0 :(得分:1)

从json文本复制并在Visual Studio中的新类中进行复制编辑->选择性粘贴->将JSON粘贴为类

public class Rootobject
        {
            public int response_code { get; set; }
            public Result[] results { get; set; }
        }

        public class Result
        {
            public string category { get; set; }
            public string type { get; set; }
            public string difficulty { get; set; }
            public string question { get; set; }
            public string correct_answer { get; set; }
            public string[] incorrect_answers { get; set; }
        }

使用名称空间

using Newtonsoft.Json;

响应就是从您的服务中获得价值

var outdeserialized = JsonConvert.DeserializeObject<Rootobject>(response);