2 u010650772 u010650772 于 2013.08.27 20:34 提问

在wp7上用JSON.NET反序列化json串时遇到了问题

在手机端获得了这样的json串:
[
{"class":"Board","id":1,"articles": [{"class":"Article","id":1}],
"boardName":"122222","boarder": {"class":"User","id":1},
"description":"22222","postCount":0},
{"class":"Board","id":2,"articles":[],"boardName":"555555","boarder":{"class":"User","id":2},"description":"555555","postCount":0}]

我打算用json.NET来解析它。已经把Newtonsoft.Json.dll添加进来。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
然后我写了一系列的类(这里我想用Board这个类来接收json串):

//为接收 Board json 串写的两个类
public class Boarder
{
public string @class { get; set; }
public int id { get; set; }
}
public class Board
{
public string @class { get; set; }
public int id { get; set; }
public List articles { get; set; }
public string boardName { get; set; }
// public Boarder boarder { get; set; }
public User boarder { get; set; }
public string description { get; set; }
public int postCount { get; set; }
}

//为接收 Article json 串写的三个类
/*public class Board
{
public string @class { get; set; }
public int id { get; set; }
}*/
/*public class Owner
{
public string @class { get; set; }
public int id { get; set; }
}*/
public class Article
{
public string @class { get; set; }
public int id { get; set; }
public Board board { get; set; }
public List comments { get; set; }
public string detail { get; set; }
public string lastReplyTime { get; set; }
//public Owner owner { get; set; }
public User owner { get; set; }
public string postTime { get; set; }
public int replyCount { get; set; }
public string title { get; set; }
}

//为接收 User json 串写的三个类
/*public class Article
{
public string @class { get; set; }
public int id { get; set; }
}*/
/*public class Comment
{
public string @class { get; set; }
public int id { get; set; }
}*/
public class User
{
public string @class { get; set; }
public int id { get; set; }
public string address { get; set; }
public List articles { get; set; }
public object birthday { get; set; }
public List comments { get; set; }
public string email { get; set; }
public string lastLoginTime { get; set; }
public string nickName { get; set; }
public string password { get; set; }
public string picture { get; set; }
public string qq { get; set; }
public string registerTime { get; set; }
public string sex { get; set; }
public string signDetail { get; set; }
}

//为接收 Comment json 串写的三个类
/*public class Article
{
public string @class { get; set; }
public int id { get; set; }
}*/
/*public class Owner
{
public string @class { get; set; }
public int id { get; set; }
}*/
public class Comment
{
public string @class { get; set; }
public int id { get; set; }
public Article article { get; set; }
public string detail { get; set; }
//public Owner owner { get; set; }
public User owner { get; set; }
public string postTime { get; set; }
}

接收类写完后,我用Board类来接收json串:
List p1 = JsonConvert.DeserializeObject>(e.Result.ToString()); //获取到的json数据反序列化

结果程序报错,错误信息为:
“Newtonsoft.Json.JsonConvert.DefaultSettings 未能计算表达式的值 System.Func"
"emptyArray = 有关包含类的信息不可用,因此无法获取字段“_emptyArray”的值。"
~ ~

求各位大神帮我看看我写的类是不是有问题?谢谢!

3个回答

jkuco
jkuco   2013.08.28 14:10
已采纳

在jsp中有个eval的,不知道可以运用不,用了次标签可以还原到开始的json状态,具体的我不知道这个东西怎么用。你看看,或许可以有收获。

chenyi2821267
chenyi2821267   2013.08.27 23:52

如果你的json含有嵌套,定义的class里子json项设为自定义类型可能会出错,可以试试用将子json视为string类型public string XXX{ get; set; },然后在set里将嵌套的json取出再解析一次

u013125604
u013125604   2015.08.14 21:09

对方规划即可吗妈妈能金鹤范第四中学风风光光图片

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Net深入实战系列—JSON序列化那点事儿
序         当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json)。JavaScriptSerializer是微软官方提供的一种方法,所以如果你用的是asp.net mvc,在Action中如果你返回的语句写的是”return Json(xxx);“,其实你用的就是JavaScript
JSON.NET对象序列化示例教程
JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询。目前已被微软集成于webapi框架之中,因此,熟练掌握JSON.NET相当重要,这篇文章是零度参考官网整理的示例,通过这些示例,可以全面了解JSON.NET提供的功能。 与其它任框架一样,要使
Json.NET使用入门(五)【复杂Json反序列化】
人一旦觉悟,就会放弃追寻身外之物,而开始追寻内心世界的真正财富。相关实体类:public class RsponseJson { [JsonProperty("msgType")] public string MsgType { get; set; } [JsonProperty("msgObj")] public string
序列化Json时遇到的大小写问题及解决方法
加个Json提供的特性就好了。         ///         /// 商品名称         ///         [JsonProperty("productName")]         public string ProductName { set; get; }
使用Json.net序列化和反序列化自定义日期
在使用json.net序列化和反序列化DateTime类型数据的时候,经常会碰到一些麻烦。比如不同的接口需要的日期显示格式不同,对数据库中空值和日期最小值的处理。   先看下面的例子,需要序列化和反序列化的类如下  public class ArchiveModel { public long ArchiveId { get; set; } public
【Unity&JSON】.net JSON 数组 序列化和反序列化,并 创建玩家数据列表
在Unity中序列化和反序列化Json和Json Array 原文的地址:http://stackoverflow.com/questions/36239705/serialize-and-deserialize-json-and-json-array-in-unity 本文仅作学习分享。 ---------------------------------------------
Json.NET使用入门(二)【反序列化】
人生在世,一切都是机缘,顺其自然,内心就会逐渐清朗,生活,也是一首陪伴一生的乐曲。有时它激昂高亢,有时它曲折婉转,有时它忧郁沉闷。生活是快乐的,还是令人难以接受的,这取决于自己的心态。DeserializeDemo.aspx内容:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DeserializeDemo.aspx.cs" Inh
.NET中JSON数据进行序列化和反序列化
可以使用DataContractJsonSerializer类将类型实例序列化为JSON字符串,并将JSON字符串反序列化为类型实例。 DataContractJsonSerializer在System.Runtime.Serialization.Json命名空间下,.NET Framework 3.5包含在System.ServiceModel.Web.dll中,需要添加对其的引用;.NET F
[.Net码农]用Json.NET将json字符串反序列化为json匿名对象
http://www.cnblogs.com/scottckt/archive/2011/12/14/2287471.html  首先定义一个匿名对对象,并序列化成Json,用于测试。 如何将这个Josn字符串转换为JSON对象呢?如果先创建一个类的话,那就太累了。 var o = new {    a = 1,    b = "Hello, Wo
vs2010打开时遇到的问题
vs2010打开时出现的当外接程序正在opened上接收时导致访问冲突,是否要终止该