Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C解析具有相同标记名的JSON#_C#_Json - Fatal编程技术网

C# 使用C解析具有相同标记名的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"

我正在使用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对象中?

使用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,关于你的解决方案,我认为如果它能工作的话会是最好的,但是我试过了,反序列化对象类型的联系人,它给我空值。