将JSON列表解析为C#中的int数组

Hag*_*and 0 c# json.net

我在将数字的JSON列表读取到ac#int []数组时遇到麻烦。

我尝试了SO的一些建议,但没有一个起作用。我将如何使用JSON.net进行此操作?

从JSON文件中提取:

    {
        "course": "Norsk",
        "grades": [6, 3, 5, 6, 2, 8]
    }
Run Code Online (Sandbox Code Playgroud)

我在c#中尝试过的内容:

// Reads the JSON file into a single string
string json = File.ReadAllText(jfile);
Console.WriteLine(json);

// Parsing the information to a format json.net can work with
JObject data = JObject.Parse(json);

JToken jToken = data.GetValue("grades");
jGrades = jToken.Values<int>().ToArray();
Run Code Online (Sandbox Code Playgroud)

和:

// Reads the JSON file into a single string
string json = File.ReadAllText(jfile);
Console.WriteLine(json);

// Parsing the information to a format json.net can work with
JObject data = JObject.Parse(json);

for (int o = 0; o < 6; o++) {
    var grades = from p in data["Info"[i]] select (int)p["grades"[o]];
    jGrades.Add(Convert.ToInt32(grades));
}
Run Code Online (Sandbox Code Playgroud)

从c#摘录中可以看到,我已经尝试过使用数组和列表,但是无法正常工作。

在第一个示例(带有数组)中,我得到了System.NullRefrenceException,而在列表示例中,我遇到了一些错误,例如无法将类型为'whereselectlistiterator'2 [Newtonsoft.JSON]的对象转换为类型为'system.iconvertible'的对象。 '

技巧的任何帮助,不胜感激。

Ese*_*ser 5

JObject.Parse(json) 是你的根对象

JObject.Parse(json)["grades"] 是列表/数组

您要做的就是:将项目转换为适当的类型

var list = JObject.Parse(json)["grades"].Select(x => (int)x).ToArray();
Run Code Online (Sandbox Code Playgroud)

您也可以声明一个类

public class RootObject
{
    public string course { get; set; }
    public List<int> grades { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并将整个对象反序列化为

var myobj = JsonConvert.DeserializeObject<RootObject>(json);
var grade = myobj.grades[0];
Run Code Online (Sandbox Code Playgroud)