C# C语言中的JSON解析#

C# C语言中的JSON解析#,c#,json,C#,Json,这个代码有什么问题 JSON cities: [ { city: { id: 1, name: "A.S.Peta", status: "Active" } },.............. C#代码 public class Cities { public City[] cities; } public class City { public int id; //{ get; set; } pu

这个代码有什么问题

JSON

cities: [
{
    city: {
        id: 1,
        name: "A.S.Peta",
        status: "Active"
    }
},..............
C#代码

public class Cities
{
    public City[] cities;    
}

public class City
{
    public int id; //{ get; set; }
    public string name; //{ get; set; }
    public string status; //{ get; set; }
}

//De-Serialization
var jsSerialize = new JavaScriptSerializer();
var cities = jsSerialize.Deserialize<Cities>(result);
公共级城市
{
公共城市[]个城市;
}
公营城市
{
公共int-id;/{get;set;}
公共字符串名称;//{get;set;}
公共字符串状态;//{get;set;}
}
//反序列化
var jsSerialize=新的JavaScriptSerializer();
var cities=jsSerialize.Deserialize(结果);
不填充内部对象城市。但是显示所有记录的集合。有什么想法吗?

json对象中的“内部”
city
正在数组中添加一个嵌套对象

尝试以下json代码:

{
    "cities": [
    {  
        "id": 1,
        "name": "A.S.Peta",
        "status": "Active"
    },
    {  
        "id": 2,
        "name": "Strasbourg",
        "status": "Active"
    }
    ]
}
如果您需要坚持原来的json结构,可以尝试以下c代码:

公共类城市2
{
公共int id{get;set;}
公共字符串名称{get;set;}
公共字符串状态{get;set;}
}
公营城市
{
公共城市2城市{get;set;}
}
公共类根对象
{
公共列表城市{get;set;}
}

这段代码是由这个非常有用的web工具自动生成的:

您可以做一件事。在准备JSON对象之前。您可以通过在服务器端序列化并保留一个调试器来检查伪JSON。在反序列化之前,您是否尝试序列化并查看您使用的JSON字符串是否与生成的JSON字符串相同,我认为有额外的{}。。。不确定,只需尝试var jsSerialize=new JavaScriptSerializer();var cities=jsSerialize.Serialize(new cities());请注意
city,cities
city,cities
之间存在大小写差异。无效的JSON原语:cities。@RoyiNamir:您应该将整个jscon包装到一对括号中。我更新代码以反映这一点。但是请注意,
{id:1,name:“A.S.Peta”,status:“Active”}
不是有效的json。只是JSS容忍它。@RoyiNamir:为什么JSON对象无效?@stakx自己试试。每个对象键应位于
下。
public class City2
{
    public int id { get; set; }
    public string name { get; set; }
    public string status { get; set; }
}

public class City
{
    public City2 city { get; set; }
}

public class RootObject
{
    public List<City> cities { get; set; }
}