首页 新闻 赞助 找找看

.net JSON反序列化

0
悬赏园豆:20 [已解决问题] 解决于 2016-03-02 16:45

接口返回JSON字符串:

"[\n  [\n    {\n      \"id\": \"56d55e5fa076570d7624cd65\",\n      \"url\": \"http://a12cfa748e3798590a15.b0.upaiyun.com/apicloud/7abb650ab1ac16a4a30e56174271d297.png\",\n      \"AppVer\": \"下载版本\",\n      \"createdAt\": \"2016-03-01T09:18:23.707Z\",\n      \"updatedAt\": \"2016-03-02T01:10:36.824Z\"\n    },\n    {\n      \"id\": \"56d6504b94cbf6192e1570f0\",\n      \"url\": \"http://a12cfa748e3798590a15.b0.upaiyun.com/apicloud/7abb650ab1ac16a4a30e56174271d297.png\",\n      \"AppVer\": \"新版本\",\n      \"createdAt\": \"2016-03-02T02:30:35.922Z\",\n      \"updatedAt\": \"2016-03-02T02:30:44.738Z\"\n    }\n  ]\n]"

程序里调试用放大镜看的是对的。

反序列化: List<AppVer_Download> fd = JsonConvert.DeserializeObject<List<AppVer_Download>>(ds);

实体类:

public class AppVer_Download
{
//public Apper_Download[] Apper_Download;

public AppVer_Download()
{

}
public string id { get; set; }

public string url { get; set; }
public string AppVer { get; set; }
public DateTime createdAt { get; set; }
public DateTime updatedAt { get; set; }


}

 

 

如果实例化定义:

//public static T GetObjFromJson<T>(string strJson)
//{
// T obj = Activator.CreateInstance<T>();
// using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson)))
// {
// DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(obj.GetType());
// return (T)jsonSerializer.ReadObject(ms);
// }
//}

报错:

“Newtonsoft.Json.JsonSerializationException”类型的未经处理的异常在 Newtonsoft.Json.dll 中发生

其他信息: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'Textd.AppVer_Download' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.

求大神赐教!!!!!在线等待

青龙游天的主页 青龙游天 | 初学一级 | 园豆:167
提问于:2016-03-02 16:24
< >
分享
最佳答案
0

把前[\n  [\n后\n  ]\n]先删除在反序列化

收获园豆:20
lb1208 | 菜鸟二级 |园豆:371 | 2016-03-02 16:26

删了,一样var p = ds.Replace("\n", "");

青龙游天 | 园豆:167 (初学一级) | 2016-03-02 16:27

@青龙游天: 是[[]]中括号去掉……,你删\n做什么

lb1208 | 园豆:371 (菜鸟二级) | 2016-03-02 16:28

@青龙游天: string str=你得到的json;

      str=str.subString(1,str.length-3);

      然后反序列化str,你试下

lb1208 | 园豆:371 (菜鸟二级) | 2016-03-02 16:30

@lb1208: subString没这个属性,返回的字符串没

青龙游天 | 园豆:167 (初学一级) | 2016-03-02 16:32

@青龙游天: 

 string str=你得到的json;

      str=str.Substring(1,str.length-3);

      然后反序列化str,你试下

lb1208 | 园豆:371 (菜鸟二级) | 2016-03-02 16:34

@lb1208: 返回的json字符串点不出来subString这个属性

青龙游天 | 园豆:167 (初学一级) | 2016-03-02 16:36

@青龙游天:是Substring,我改了,不要这么较真

lb1208 | 园豆:371 (菜鸟二级) | 2016-03-02 16:38

@lb1208: 我知道这是截取字符串的,点不出来,再说那个是数组类型JSON字符串

青龙游天 | 园豆:167 (初学一级) | 2016-03-02 16:39

@lb1208: 可以点出来,电脑卡了。。。我刚才也纳闷呢

青龙游天 | 园豆:167 (初学一级) | 2016-03-02 16:40

@青龙游天:最后回答一次,1.截掉中括号,2.看自己建的模型是不是符合!!

lb1208 | 园豆:371 (菜鸟二级) | 2016-03-02 16:41

@lb1208: 嗯嗯,谢了,得到值了,我要同步到SQLITE库里面

青龙游天 | 园豆:167 (初学一级) | 2016-03-02 16:44

@lb1208: 治标不治本啊,换个表到数据那个地方还是不行同样的错

青龙游天 | 园豆:167 (初学一级) | 2016-03-02 17:48

@青龙游天: 1.多中括号的话,需要截掉中括号,2.看自己建的模型是不是符合!!

lb1208 | 园豆:371 (菜鸟二级) | 2016-03-04 16:05

@lb1208: 嗯嗯,就是中括号问题,已经解决了,非常感谢你。都可以随便导出数据了。

青龙游天 | 园豆:167 (初学一级) | 2016-03-04 16:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册