【问题标题】:How to Parse Json webService response in WP7如何在 WP7 中解析 Json webService 响应
【发布时间】:2012-04-11 06:14:07
【问题描述】:

我想在不使用任何 DLL 的情况下在列表框中显示数据。并且我的 web 服务以 json 格式响应。

我的 Web 服务响应如下。它有超过 800 条记录

[
    {
    "st_id":"1",
        "st_name":"name xyz"
    },
{

  "st_id":"2",
   "st_name":"name ABC"
},
{

  "st_id":"3",
   "st_name":"name HIJK"
},
{
  "st_id":"4",
   "st_name":"name OPQ"
},
]

我的数据类如下

[DataContract]
public class Student
{
    [DataMember=("st_id")]
    public bool st_id { get; set; }
    [DataMember=("st_name")]
    public string st_name { get; set; }

}

我正在尝试使用 DataContractJsonSerializer 序列化对象并在 Stream 中获取 WS 响应。但我无法序列化。建议链接或基本教程用于 json 的 Serilize 和 Deserilize

DataContractJsonSerializer stdserialize = 
    new DataContractJsonSerializer(typeof(Student));
Student stuser = (Student)stdserialize.ReadObject(responseStream);

所以请帮助解析 json 响应并为 datacontract 和所有提供基础知识的链接提供建议。
谢谢,

【问题讨论】:

  • 为什么指定“不使用任何 DLL”?我会使用 Json.NET,它在 WP7 中运行良好......
  • 但在尝试为 Json.Net 添加参考时它没有显示。 & 我也尝试了使用 System.Json 的命名空间;
  • 嗯,Json.NET 不使用那个命名空间......你必须先从 json.codeplex.com 下载它......
  • ok thnks jon 实际上,当我从 ths URL 读取时,我只是在尝试使用 tht 命名空间。 msdn。 bt 我怎样才能用上面的代码读取响应。
  • 阅读json.codeplex.com 上的文档。这是相当不错。 (哎呀,DataContractJsonSerializer 完全有可能适合你——你还没有说你尝试过会发生什么。)

标签: windows-phone-7 datacontractserializer


【解决方案1】:

您将 st_id 声明为 bool,但您尝试反序列化的数据类型是字符串(可以转换为数字 - 而不是布尔值)。尝试将其声明为string,它应该可以工作。

另外,响应是一个对象的数组,所以你应该使用的类型是Student[]

DataContractJsonSerializer stdserialize = 
    new DataContractJsonSerializer(typeof(Student[]));
Student stuser = (Student[])stdserialize.ReadObject(responseStream);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2013-01-26
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多