Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何编写正确的json路径?_C#_Json - Fatal编程技术网

C# 如何编写正确的json路径?

C# 如何编写正确的json路径?,c#,json,C#,Json,我有这样一个json对象: 我想通过以下代码行访问“问题”字段: string msg = (json1["data"][0]["question"]).ToString(); 但它不起作用,为什么 但它不起作用,为什么 因为您需要再次查看json “数据”是一个对象,而不是数组。因此“[0]”无效,因为它将访问数组的第一个元素。这里唯一的数组是“answers”元素。“问题”直接是“数据”的属性。准备一个C#模型,如下所示 public class

我有这样一个json对象:

我想通过以下代码行访问“问题”字段:

string msg = (json1["data"][0]["question"]).ToString();
但它不起作用,为什么

但它不起作用,为什么

因为您需要再次查看json

“数据”是一个对象,而不是数组。因此“[0]”无效,因为它将访问数组的第一个元素。这里唯一的数组是“answers”元素。“问题”直接是“数据”的属性。

准备一个C#模型,如下所示

public class rootClass
    {
        public bool ok { get; set; }
        public data data { get; set; }
    }

    public class data
    {
        public string question { get; set; }
        public string[] answers { get; set; }
        public int id { get; set; }
    }
rootClass rootClass = JsonConvert.DeserializeObject<rootClass>(inputJson);
            string msg = rootClass.data.question;
并使用JsonConvert(Newtonsoft dll)类进行反序列化和访问,如下所示

public class rootClass
    {
        public bool ok { get; set; }
        public data data { get; set; }
    }

    public class data
    {
        public string question { get; set; }
        public string[] answers { get; set; }
        public int id { get; set; }
    }
rootClass rootClass = JsonConvert.DeserializeObject<rootClass>(inputJson);
            string msg = rootClass.data.question;
rootClass rootClass=JsonConvert.DeserializeObject(inputJson);
字符串msg=rootClass.data.question;

“数据”不是数组。因为它是一个对象(使用
{}
声明),而不是一个数组(使用
[]
声明),所以你可以分辨出来;(这回答了你的问题吗?在我看来,我们这里有一点XY。而眼前的问题是,
数据
不是数组。你真正的问题来自“数据”作为对象或数组。我将创建一个类,其中数据是数组。当它是单个对象时,将其反序列化为一个元素数组。这样,无论发生什么,您都可以像处理集合一样处理数据。为此,请使用拖放链接。