读取和解析JSON数据

本文关键字:数据 JSON 和解 读取 | 更新日期: 2023-09-27 18:14:03

我是c#新手,我试图从WSDL服务解析JSON数据。

代码如下:

string cityjson = service.getcity(); 
/*
sample cityjson return
[{"City":"Alaminos","Province":"Pangasinan"},{"City":"Angeles","Province":"Pampanga"},{"City":"Antipolo","Province":"Rizal"}]
*/

using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(cityjson)))
{
    var serializer = new DataContractJsonSerializer(typeof(Location));
    Location locs = (Location)serializer.ReadObject(ms);
    Console.WriteLine(locs.Locations); // blank in console output.
}

这是我的数据合约代码

[DataContract]
public class Location
{
    [DataMember]
    public String[] Locations;
}

当我执行console.WriteLine(cityjson);时,它打印整个json

读取和解析JSON数据

你的c#类是错误的。它应该有两个性质CityProvince,而json对象是 Locations的List。并尝试使用JSON.Net来解析json数据。它重量轻,使用方便。也可以使用可用的资源将json转换为c#类型。

public class Location
{
    public String City { get; set; }
    public String Province { get; set; }
}
var t = "[{'City':'Alaminos','Province':'Pangasinan'},{'City':'Angeles','Province':'Pampanga'},{'City':'Antipolo','Province':'Rizal'}]";
var type = JsonConvert.DeserializeObject<List<Location>>(t);

使用System.Web.Script.Serialization;

像这样重写你的代码

JavaScriptSerializer js = new JavaScriptSerializer(); 
Location locs = js.Deserialize<Location>(ms);