不同Json格式的反序列化处理

最近换工作 从客户端转到Web端 第一个任务就是去页面上抓取数据 用到的是JSON 因为json的格式有点怪 所以 就在JSON反序列化上面 花了一点时间

首先用到的工具是http://www.newtonsoft.com/json

然后 根据JSON创建对应的对象类

下面分三种JSON形式

Demo1:

json:{"id":"1","name":"aaa1","work":"aaa2"}

这个是最常见的json格式

对象类:

1 public class worker
2 {
3   public string id { get; set; }
4
5   public string name { get; set; }
6
7   public string work { get; set; }
8 }

输出:

1 string jsonStr="....";   //json
2 var x = JsonConvert.DeserializeObject<worker>(jsonStr);
3 return x.name+"|"+x.work;

Demo2:

json:[{"id":"1","name":"aaa1","work":"aaa2"},{"id":"2","name":"bbb1","work":"bbb2"},{"id":"3","name":"ccc1","work":"ccc2"}]

这个是带数组的json格式

对象类:

1 public class worker
2 {
3         public string id { get; set; }
4         public string name { get; set; }
5         public string work { get; set; }
6 }

输出:

1 string jsonStr="...":
2 List<worker> lst = JsonConvert.DeserializeObject<List<worker>>(jsonStr);
3
4 for(int i=0;i<jsonStr.Count;i++)
5 {
6       if(lst[i].id=="1")
7            return lst[i].name;
8 }    

Demo3:

json:[{"Department":{"Leader":"x1","number":"10"},"worker":[{"id":"1","name":"aaa1","work":"aaa2"},{"id":"2","name":"bbb1","work":"bbb2"},{"id":"3","name":"ccc1","work":"ccc2"}]},{"Department":{"Leader":"x2","number":"20"},"worker":[{"id":"4","name":"ddd1","work":"ddd2"},{"id":"5","name":"eee1","work":"eee2"},{"id":"6","name":"fff1","work":"fff2"}]}]

这是个多层嵌套并且带数组的json格式

对象类:

public class Company
{
    public string Department { get; set; }
    public worker[] WorkerInfo{ get; set; }   //这里注意这个worker类是个数组
}

public class worker
{
    public string id {get; set;}
    public string name {get; set;}
    public string work {get; set;}
}        

输出:

Company[] c = JsonConvert.DeserializeObject<Company[]>(jsonStr);

foreach(Compant c1 in c)
{
    Department d =c1.Department;
    WorkerInfo[] wi=c1.WorkerInfo;  

    string leader=d.leader;

    foreach(WorkerInfo wi1 in wi)
    {
          string name=wi1.name;
          return name+leader;
    }
}

时间: 2024-09-30 16:14:24

不同Json格式的反序列化处理的相关文章

C# 后台通过网络地址访问百度地图取回当前在地图上的经纬度,并将取回的复杂Json格式字符串反序列化(Newtonsoft.Json)

直接上代码:解释都在代码中 ak 要自己去百度地图申请. 其中申请ak的时候,有个属性render直接填*就行. namespace HampWebControl 是我的空间命名! namespace HampWebControl 是我的空间命名! namespace HampWebControl 是我的空间命名! using Newtonsoft.Json; using System; using System.IO; using System.Net; using System.Securi

fastJson java后台转换json格式数据

什么事JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等

JSON序列化和反序列化的实例

之前有项目中使用到了Json的序列化和反序列化,现在将使用的实例记录下来以备查阅.如有不妥,请指教. 代码的最终目的是得到一个符合 resultClass<List<rtnGetFindMyCar>> 要求的JSON字符串 JsonHelper.cs public class JsonHelper { /// <summary> /// JSON序列化 /// </summary> public static string JsonSerializer<

DotNet的JSON序列化与反序列化

JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有两种表示结构,对象和数组,JSON 数据的书写格式是:名称/值对. 在vs解决方案中以前采用xml树的形式,组织项目的结构.在新的.net core中,项目的解决方案采用json作为项目的结构说明. 在.net的前后台数据交互中,采用序列化对象为json,前端ajax接受传输数据,反序列化为对象,在

json序列化和反序列化List

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Newtonsoft.Json; namespace JsonDome { public partial class WebForm1 : System.Web.UI.Page { protected void

C#中怎样将List&amp;lt;自己定义&amp;gt;转为Json格式 及相关函数-DataContractJsonSerializer

对C#和.net使用List<自己定义>和Json格式相互转化的方法进行总结 关于JSON的入门介绍见http://www.json.org/ ,或者百度,这里不赘述,只是通过以下的样例会有个更快捷和更直观的认识. 如Json格式[{"id":"1","name":"sara"},{"id":"2","name":"sara2"}] 自

.NET的JSON格式数据的三种转换方式

说明: 1..Net进行JSON格式的数据传递的时候,势必用到序列化和反序列化对象,总共有三种方式可是在.NET中实现序列化和反序列化的需求. 2.操作JSON的速度是:Json.net > MicrosoftJSON > JsJSON 3.下面对应的三种将对象转为JSON格式数据方式的目前相对很好博客. 5.谢谢各位前辈的辛苦发帖,各人表示由衷的敬意. JSON.NET 参考的博客: [1]JSON.NET使用技巧:http://www.cnblogs.com/IPrograming/p/4

Python Json序列化与反序列化

在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json库与pickle库来处理这部分. json的dumps方法和loads方法,可实现数据的序列化和反序列化.具体来说,dumps方法,可将json格式数据序列为Python的相关的数据类型:loads方法则是相反,把python数据类型转换为json相应的数据类型格式要求.在序列化时,中文汉字总是被转

总结的一些json格式和对象/String/Map/List等的互转工具类

原文:总结的一些json格式和对象/String/Map/List等的互转工具类 源代码下载地址:http://www.zuidaima.com/share/1550463691508736.htm 总结的一些json格式和对象/String/Map/List等的互转工具类,有需要的可以看看,需要引入jackson-core-asl-1.7.1.jar.jackson-jaxrs-1.7.1.jar.jackson-mapper-asl-1.7.1.jar这三个jar包 package com.