使用C#解析具有相同标记名称的JSON

时间:2012-06-04 11:12:41

标签: c# json

我正在使用C#编写代码,该代码将解析JSON代码并将其创建为对象。

我有这个JSON示例

{
     "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对象中吗?

2 个答案:

答案 0 :(得分:0)

使用NEWTONSOFT.JSON,您可以通过此代码获取PhoneNumber数组

JArray sa = (JArray)o["person"]["phoneNumbers"]["phoneNumber"];

这可以通过

获得数量的电话号码
sa.Count

答案 1 :(得分:0)

如果您正在使用Json.Net来解析json,那么首先应该创建以下创建并将json反序列化为以下联系对象,在反序列化到联系对象后,每个事物都将是直接的。

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;