C# 在c中解析JSON列表到int数组
我在将JSON数字列表读入c int[]数组时遇到问题 我试过SO的几个建议,但没有一个奏效。 我将如何使用JSON.net实现这一点 从JSON文件中提取:C# 在c中解析JSON列表到int数组,c#,json.net,C#,Json.net,我在将JSON数字列表读入c int[]数组时遇到问题 我试过SO的几个建议,但没有一个奏效。 我将如何使用JSON.net实现这一点 从JSON文件中提取: { "course": "Norsk", "grades": [6, 3, 5, 6, 2, 8] } 我在c中尝试过的: // Reads the JSON file into a single string string json = File.ReadAllText(jfile);
{
"course": "Norsk",
"grades": [6, 3, 5, 6, 2, 8]
}
我在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();
以及:
正如您从c摘录中所看到的,我尝试过使用数组和列表,但无法使其正常工作
在第一个数组示例中,我得到了System.NullRefrenceException,而在列表示例中,我得到了几个错误,例如无法将类型为'whereselectlistiterator'2[Newtonsoft.JSON]的对象强制转换为类型为'System.IConvertiable'
感谢您提供的任何提示。JObject.Parsejson是您的根对象
Parsejson[grades]是列表/数组
您所要做的就是:将项目转换为适当的类型
var list = JObject.Parse(json)["grades"].Select(x => (int)x).ToArray();
您还可以声明一个类
public class RootObject
{
public string course { get; set; }
public List<int> grades { get; set; }
}
并将整个对象反序列化为
var myobj = JsonConvert.DeserializeObject<RootObject>(json);
var grade = myobj.grades[0];
我通常会定义一个具有相关属性的类,然后简单地转换对象
public class CourseReport
{
public string Course { get; set; }
public ICollection<int> Grades { get; set; }
}
// 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
var courseReport = JsonConvert.DeserializeObject<CourseReport>(json);
foreach (var grade in courseReport.Grades)
{
Console.WriteLine(grade);
}
谢谢,我尝试了您的第一个解决方案,但最终得到一个系统异常错误。如果这样做有效,我将如何访问这些信息,因为它是一个变量而不是一个数组?我可以为它编制索引并将其添加到列表中吗?例如:var列表。。。等级。地址列表[i]@Hagland a上面的代码与您问题中的json一起工作,b感谢您阅读了var,但是不,代码不工作:@Hagland,所以您认为这个差异不重要!!。好的,祝你好运。每当你决定问一个好问题,我们都会here@Hagland你认为jobj[someprop]会在json中的任何地方找到值吗。Json是一种分层表示,如果不知道整个结构,就无法给出正确的答案。。。如果您不想发布真正的json,那么打开文档并阅读它们。这是所有你可以从我们这里得到的你所提供的信息。
public class CourseReport
{
public string Course { get; set; }
public ICollection<int> Grades { get; set; }
}
// 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
var courseReport = JsonConvert.DeserializeObject<CourseReport>(json);
foreach (var grade in courseReport.Grades)
{
Console.WriteLine(grade);
}