【发布时间】:2016-02-11 00:22:07
【问题描述】:
我的 json 文件中有以下结构
"missionName": "missionname",
"thumb_image": "pics/mission-info.png",
"uplinkPage": [
{
"RPC": {
"name": "RPC",
"rpc": "",
"args": ""
},
"EXE": {
"name": "app1",
"prog": "",
"args": ""
},
"VM": {
"name": "VM",
"name": "",
"args": ""
},
"JAR": {
"name": "JAR",
"prog": "",
"args": ""
},
"link": {
"name": "somelink",
"url": ""
}
}
],
为此,我有以下课程
public class EXE
{
public string name { get; set; }
public string prog { get; set; }
public string args { get; set; }
}
public class RPC
{
public string name { get; set; }
public string rpc { get; set; }
public string args { get; set; }
}
public class VM
{
public string name { get; set; }
public string args { get; set; }
}
public class JAR
{
public string name { get; set; }
public string prog { get; set; }
public string args { get; set; }
}
public class Link
{
public string name { get; set; }
public string url { get; set; }
}
public class UplinkPage
{
public VM[] vmList { get; set; }
public EXE[] exeList { get; set; }
public RPC[] rpcList { get; set; }
public JAR[] jarList { get; set; }
public Link[] linkList { get; set; }
}
public class Rootobject
{
public string missionName { get; set; }
public string thumb_image { get; set; }
public Uplinkpage[] uplinkPage { get; set; }
}
uplinkPage 部分可以有一个或多个 EXE、RPC、VM .. 部分。我试图添加这样的乘法部分
"EXE": {
"1": {
"name": "app1",
"data-prog": "",
"data-args": ""
},
"2": {
"name": "app2",
"data-prog": "",
"data-args": ""
}
}
当我这样进行反序列化时
Rootobject page = JsonConvert.DeserializeObject<Rootobject>(File.ReadAllText("mission1.json"));
我得到一个对象,我可以读取所有内容,除非我有多个相同类型的值,我只会得到其中一个。如果我将部分声明为数组
public EXE[] exeList { get; set; }
我会得到最后一个,如果是
Dictionary<string,EXE> exeList {get; set;}
我会得到第一个。我注意到,当我使用字典时,EXE 的类型变为 EXE1。
所以我想知道我做错了什么?我在这里有什么任务吗?
干杯, 是的
【问题讨论】:
-
您可以控制 JSON 的格式吗?
-
是的,我可以完全控制它,但我认为我使用的那个不正确。