C# 使用C解析具有相同标记名的JSON#
我正在使用C#编写一个代码,它将解析JSON代码并将其创建为对象 我有一个JSON示例C# 使用C解析具有相同标记名的JSON#,c#,json,C#,Json,我正在使用C#编写一个代码,它将解析JSON代码并将其创建为对象 我有一个JSON示例 { "firstName": "John", "lastName" : "Smith", "age" : 25, "address" : { "streetAddress": "21 2nd Street", "city" : "New York", "state"
{
"firstName": "John",
"lastName" : "Smith",
"age" : 25,
"address" :
{
"streetAddress": "21 2nd Street",
"city" : "New York",
"state" : "NY",
"postalCode" : "10021"
},
"phoneNumber":
[
{
"type" : "home",
"number": "212 555-1234"
},
{
"type" : "fax",
"number": "646 555-4567"
}
]
}
正如你所看到的,有多个数字,有些人有1个电话号码,有些人有4个或5个
我知道我应该做一个While循环,但是我可以得到电话号码中有多少个电话吗?使用计数器将这些电话添加到我创建的PhoneNumber对象中?使用NEWTONSOFT.JSON,您可以通过此代码获得一个PhoneNumber数组
JArray sa = (JArray)o["person"]["phoneNumbers"]["phoneNumber"];
这将获得可用的电话号码
sa.Count
如果您使用Json.Net解析Json,那么首先您应该创建以下内容创建Json并将其反序列化到下面的Contact对象中,在反序列化到Contact对象中之后,一切都会很简单
public class Contact
{
public string firstName { get; set; }
public string lastName { get; set; }
public int age { get; set; }
public address address { get; set; };
public List<phoneNumber> phoneNumber { get; set; }
}
public class address
{
public string streetAddress { get; set; }
public string city { get; set; }
public string state { get; set; }
public string postalCode { get; set; }
}
public class phoneNumber
{
public string type { get; set; }
public string number { get; set; }
}
var contact = Newtonsoft.Json.JsonConvert.DeserializeObject<Contact>(data);
var count = contact.phonenumber.Count;
公共类联系人
{
公共字符串名{get;set;}
公共字符串lastName{get;set;}
公共整数{get;set;}
公共广播地址{get;set;};
公共列表电话号码{get;set;}
}
公共课堂演讲
{
公共字符串streetAddress{get;set;}
公共字符串city{get;set;}
公共字符串状态{get;set;}
公共字符串postalCode{get;set;}
}
公共类电话号码
{
公共字符串类型{get;set;}
公共字符串编号{get;set;}
}
var contact=Newtonsoft.Json.JsonConvert.DeserializeObject(数据);
var count=contact.phonenumber.count;
phoneNumber
是一个{type:“,”number:“}
你是如何进行解析的,你真的需要知道会有多少电话号码吗?我正在使用NEWTONSOFT.JSON进行解析,这就是我如何进行解析的。PhoneNumber是我创建的一个类,我有另一个名为Person的类,它有一个实例变量,如列表。你是在做练习还是在做作业?因为库已经为你做了这些。看看这里@Asef,关于你的解决方案,我认为如果它能工作的话会是最好的,但是我试过了,反序列化对象类型的联系人,它给我空值。