我在下面有一个JSON字符串:
{
"data": [
{
//data for first
},
{
//data for second
},
{
//data for third
},
]
}
从这个JSON字符串中,我想检索"data"
元素中的对象数,在这种情况下,它将是3。
实现这一目标的最佳方法是什么?我使用了.Length
属性,但返回了一个我没想到的数字。
我正在使用C#。
答案 0 :(得分:3)
由于它是C#中的字符串,因此您需要将其解析为可以先使用的内容。这是使用框架类的一种简单方法。
//obj is your JSON string
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
Dictionary<string,object> csObj =
serializer.Deserialize<Dictionary<string,object>>(obj);
int length = ((ArrayList)csObj["data"]).Count;
当给定通用数据结构时,JavaScriptSerializer
将数组转换为ArrayLists
。
答案 1 :(得分:1)
以下是使用Newtonsoft.Json(Json.NET)的示例,它可以作为NuGet包使用。
<强>用法:强>
var jsonString = @"{
""data"": [
{
Name: ""Mike"", Age: 30
},
{
Name: ""John"", Age: 42
},
{
Name: ""Tom"", Age: 44
}
]
}";
var example = JsonConvert.DeserializeObject<Example>(jsonString);
// example.Data.Length == 3 at this point
<强>类强>
class Example
{
public Person[] Data { get; set; }
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
答案 2 :(得分:0)
您需要首先反序列化您的json字符串以获取对象。以下帖子有几个例子。反序列化后,您应该在c#中使用数据对象的集合(不是字符串)。从那里你应该可以调用collection.Count或array.Length,具体取决于你正在使用的集合类型。