我从Web服务得到以下响应:
{
"data":{
"foo.hugo.info": {
"path": "logon.cgi",
"minVersion": 1,
"maxVersion": 2
},
"foo.Fritz.Task": {
"path": "Fritz/process.cgi",
"minVersion": 1,
"maxVersion": 1
}
},
"success": true
}
Run Code Online (Sandbox Code Playgroud)
json-object必须如何反序列化?
或者是否有其他方法来获取属性的值?
随着JSON.NET图书馆,它是非常微不足道的:
public class Root
{
public Dictionary<string, Data> Data { get; set; }
public bool Success { get; set; }
}
public class Data
{
public string Path { get; set; }
public int MinVersion { get; set; }
public int MaxVersion { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后:
string json =
@"{
""data"":{
""foo.hugo.info"": {
""path"": ""logon.cgi"",
""minVersion"": 1,
""maxVersion"": 2
},
""foo.Fritz.Task"": {
""path"": ""Fritz/process.cgi"",
""minVersion"": 1,
""maxVersion"": 1
}
},
""success"": true
}";
Root root = JsonConvert.DeserializeObject<Root>(json);
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我使用了一个Dictionary<string, Data>对象来建模2个复合键(foo.hugo.info和foo.Fritz.Task),因为它们包含不能在.NET成员中使用的名称.
如果您使用的是VS2012或更高版本,则可以执行以下操作:
Edit > Paste Special > Paste JSON As Classes
Run Code Online (Sandbox Code Playgroud)
在您的示例中,这会导致:
public class Rootobject
{
public Data data { get; set; }
public bool success { get; set; }
}
public class Data
{
public FooHugoInfo foohugoinfo { get; set; }
public FooFritzTask fooFritzTask { get; set; }
}
public class FooHugoInfo
{
public string path { get; set; }
public int minVersion { get; set; }
public int maxVersion { get; set; }
}
public class FooFritzTask
{
public string path { get; set; }
public int minVersion { get; set; }
public int maxVersion { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
242 次 |
| 最近记录: |