在C#中反序列化JSON集合

Bor*_*rre 0 c# json deserialization

这是我从服务器获得的JSON消息(我无法更改).可能会返回更多对象(时间/值),但在这种情况下只有一个.无论如何格式都保持不变.

{
  "data": [
    {
      "time": "2014-12-12T13:52:43",
      "value": 255.0
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将JSON反序列化为一个非常简单的C#对象.

public class Dataentry {
    public float Value { get; set; }
    public DateTime Time { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用Newtonsoft的JSON.Net和RestSharp库进行反序列化,但没有成功.以下代码不起作用,但我没有尝试过其他任何事情:-)我没有错误 - 只是一个具有默认初始值的空对象.

var myObject = JsonConvert.DeserializeObject<Dataentry> (jsonString);
Run Code Online (Sandbox Code Playgroud)

由于这些库在这种情况下不是非常直观或有很好的文档记录,我很遗憾.这种JSON不可能反序列化吗?我真的很想使用现成的库,所以任何帮助都会受到赞赏.

iam*_*lin 5

这不起作用,因为您的JSON指定了一个集合,并且您正尝试将其分解为一个对象.有很多json到c#类生成器你可以粘贴json来获得一个合适的类定义一个这样的生成器位于这里

更合适的定义是

public class Datum
{
    public string time { get; set; }
    public double value { get; set; }
}

public class RootObject
{
    public List<Datum> data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后deseralize as

var myObject = JsonConvert.DeserializeObject<RootObject> (jsonString);
Run Code Online (Sandbox Code Playgroud)