所以这里是JSON文件,我试图在JSON.Net中解析我们
{
"SystemsInGal": [
{
"Name": "HIP 16607",
"xPos": 0,
"yPos": 0,
"StationsInSys": [
{
"Name": "Thome Gateway",
"SystemName": "HIP 16607",
"DistanceFromStar": 2573,
"PricePerFuel": 10
}
]
},
{
"Name": "Frenis",
"xPos": 10,
"yPos": 10,
"StationsInSys": [
{
"Name": "Parsons City",
"SystemName": "Frenis",
"DistanceFromStar": 32,
"PricePerFuel": 20
}
]
}
]
}
我的问题在这里
"StationsInSys": [
{
"Name": "Parsons City",
"SystemName": "Frenis",
"DistanceFromStar": 32,
"PricePerFuel": 20
}
]
当被JSON.NET解析时,它只是给这个数组赋值null,这当然不是我之后的。第一个StationsInSys数组被正确解析,但第二个不是。人们已经检查过,并说他们找不到任何我无法纠正的差异。 JSONlint声称此文件是有效的JSON。我唯一的另一个猜测是JSON.NEt本身存在问题,但我认为情况并非如此
编辑:这是我如何设置课程
public class Galaxy
{
public SolarSystem[] SystemsInGal { get; set; }
public Player player { get; set; }
}
public class Station
{
public string Name { get; set; }
public string SystemName { get; set; }
public int DistanceFromStar { get; set; }
public int PricePerFuel { get; set; }
//TODO Add trade data here
}
public class SolarSystem
{
public string Name { get; set; }
public int xPos { get; set; }
public int yPos { get; set; }
public Station[] StationsInSys { get; set; }
}
Galaxy gal = JsonConvert.DeserializeObject<Galaxy>(jsonText);
我希望有帮助
答案 0 :(得分:1)
我尝试使用Visual Studio 2017的Edit | Paste Special | Paste JSON as classes
功能为此创建类。这似乎有效。 (我没有费心去纠正生成的类名的大小。)
以下是生成的代码 - 它与您的代码有什么不同?
using System;
using Newtonsoft.Json;
namespace Demo
{
public class Rootobject
{
public Systemsingal[] SystemsInGal { get; set; }
}
public class Systemsingal
{
public string Name { get; set; }
public int xPos { get; set; }
public int yPos { get; set; }
public Stationsinsy[] StationsInSys { get; set; }
}
public class Stationsinsy
{
public string Name { get; set; }
public string SystemName { get; set; }
public int DistanceFromStar { get; set; }
public int PricePerFuel { get; set; }
}
class Program
{
static void Main()
{
string data =
@"{
""SystemsInGal"": [
{
""Name"": ""HIP 16607"",
""xPos"": 0,
""yPos"": 0,
""StationsInSys"": [
{
""Name"": ""Thome Gateway"",
""SystemName"": ""HIP 16607"",
""DistanceFromStar"": 2573,
""PricePerFuel"": 10
}
]
},
{
""Name"": ""Frenis"",
""xPos"": 10,
""yPos"": 10,
""StationsInSys"": [
{
""Name"": ""Parsons City"",
""SystemName"": ""Frenis"",
""DistanceFromStar"": 32,
""PricePerFuel"": 20
}
]
}
]
}";
var result = JsonConvert.DeserializeObject<Rootobject>(data);
Console.WriteLine(result.SystemsInGal.Length);
}
}
}
答案 1 :(得分:1)
是的,事实证明我是一个彻头彻尾的白痴。我正在编辑的文件是我的单元测试使用的文件的副本。因此,我的编辑没有生效。
很抱歉发布此内容。我当时真的很沮丧,因为没有任何工作,Stack Overflow总是我最后的选择。我要留下我从中学到的两件事。