C#如何解析非阵列阵列
我需要解析的是具有这样的结构的jsonfile:C#如何解析非阵列阵列
"number": {
"1": {
"branch": null,
"build": 1,
"files": [
[
"zip",
"client",
"4d96d6e8f1543c5fa1184f4771ce16e2"
],
[
"zip",
"src",
"fd397591148fac49a7d57aafdccac6a3"
],
[
"zip",
"server",
"d7e1df9a91ded33be81ee8226b027c2f"
],
[
"txt",
"changelog",
"df98aec1a868ce99532c64f246387d55"
]
],
"jobver": "1.3.2",
"mcversion": "1.1",
"modified": 1328269373.0,
"version": "1.3.2.01"
},
"2": {
"branch": null,
"build": 2,
"files": [
[
"zip",
"server",
"80fbd5d837a5867c2dd7b7967e3aa2a9"
],
[
"zip",
"client",
"0cedb5e9844e490f877b6cf04601f929"
],
[
"txt",
"changelog",
"87e9fba9322e9dbc2ea482a2c3edeec6"
],
[
"zip",
"src",
"292d5596879bd13c159a2afe571ec5eb"
]
],
"jobver": "1.3.2",
"mcversion": "1.1",
"modified": 1328613907.0,
"version": "1.3.2.2"
}
(整个JSON文件可以在这里找到:http://files.minecraftforge.net/maven/net/minecraftforge/forge/json)
我必须弄明白内部,在“1”和外部导致这个代码的一部分,但使用Json.NET库我不知道如何处理“1”和“2”没有写一个单独的类为每。我有超过1000个解析槽,所以我需要一些可以做到这一点相对简单的方法。 我目前的解析类看起来是这样的:
public class forgemaven
{
public string homepage { get; set; }
public string name { get; set; }
public List<Number> number { get; set; }
public string webpath { get; set; }
}
public class Number
{
public string branch { get; set; }
public int build { get; set; }
public List<String> files { get; set; }
public string jobver { get; set; }
public string mcversion { get; set; }
public string modified { get; set; }
public string version { get; set; }
}
注:我删除了一些东西,比如第1000行版本/构建,因为它们不需要和json.net似乎罚款那。
我试着用http://json2csharp.com/解析它,可悲的是,我的浏览器崩溃。我也尝试过它的桌面版本,但是这给了我几乎MB的类,这又不是最优的,因为新的构建不断添加到这个文件中,所以我将不得不一直改变我的结构,使用这里的数据会很糟糕。
所以对于我的问题:我如何以可维护的方式做到这一点?
更换
public List<Number> number { get; set; }
您的问题是{"1" : something, "2" ; something}
不是一个JSON数组,这是一个JSON地图。
在.net中,您需要将其反序列化为Dictionary<int,TObject>
。然后你可以在之后处理它,如果它真的应该是一个List或者一个数组,你不能在反序列化的时候这样做:你首先得到了不好的json,你必须处理它。
这里是一个小提琴展示的东西(你给了JSON和你自己的类只有非常轻微的修改:将files
属性是List<List<string>>
而不是List<String>
)使用Json.Net:https://dotnetfiddle.net/feqFZd
您必须
public Dictionary<int,Number> number { get; set; }
的可能重复[如何解析会导致非法C#标识符的JSON字符串?](http://stackoverflow.com/questions/24536533/how-can-i-parse-a-json-string-that-would-cause-illegal- C-尖锐的标识符) – 2014-10-05 13:54:37