我的 JSON 如下:
{"t":"1339886","a":true,"data":[],"Type":[['Ants','Biz','Tro']]}
我找到了用于 C# 的 Newtonsoft JSON.NET 反序列化库。我尝试按如下方式使用它:
object JsonDe = JsonConvert.DeserializeObject(Json);
如何访问JsonDe
对象以获取所有“类型”数据?我用循环尝试了它,但它不起作用,因为该对象没有枚举器。
我的 JSON 如下:
{"t":"1339886","a":true,"data":[],"Type":[['Ants','Biz','Tro']]}
我找到了用于 C# 的 Newtonsoft JSON.NET 反序列化库。我尝试按如下方式使用它:
object JsonDe = JsonConvert.DeserializeObject(Json);
如何访问JsonDe
对象以获取所有“类型”数据?我用循环尝试了它,但它不起作用,因为该对象没有枚举器。
您可以实现一个包含 JSON 中的字段的类
class MyData
{
public string t;
public bool a;
public object[] data;
public string[][] type;
}
然后使用 DeserializeObject 的通用版本:
MyData tmp = JsonConvert.DeserializeObject<MyData>(json);
foreach (string typeStr in tmp.type[0])
{
// Do something with typeStr
}
从 Json.NET 4.0 Release 1 开始,有原生动态支持。您不需要声明一个类,只需使用dynamic
:
dynamic jsonDe = JsonConvert.DeserializeObject(json);
所有字段都将可用:
foreach (string typeStr in jsonDe.Type[0])
{
// Do something with typeStr
}
string t = jsonDe.t;
bool a = jsonDe.a;
object[] data = jsonDe.data;
string[][] type = jsonDe.Type;
使用动态你不需要创建一个特定的类来保存你的数据。
根据Newtonsoft 文档,您还可以像这样反序列化为匿名对象:
var definition = new { Name = "" };
string json1 = @"{'Name':'James'}";
var customer1 = JsonConvert.DeserializeAnonymousType(json1, definition);
Console.WriteLine(customer1.Name);
// James
//Your snippet
object JsonDe = JsonConvert.DeserializeObject(Json);
//what you need to do
JObject JsonDe = JsonConvert.DeserializeObject<JObject>(Json);
现在,您已经拥有和对象具有合适的属性和方法来处理数据。
您也可以使用 Dictionary<string,object> 代替 JObject。但是,还有其他选择,虽然是强类型。
NewtonSoft.Json 是一个优秀的库。我已经将它用于许多用例。
json 的美妙之处在于可以动态创建模式。因此,我们需要能够编写通用代码来使用它们