使用json-lib完成json的序列化和反序列化

合集下载

Json的序列化和反序列化

Json的序列化和反序列化

Json的序列化和反序列化Json的序列化和反序列化⼀、Json简介 Json(JavaScript Object Notation) 是⼀种轻量级的数据交换格式。

它基于JS的⼀个⼦集。

Json采⽤完全独⽴于语⾔的⽂本格式。

这使得Json成为理想的数据交换语⾔。

易于⼈阅读和编写,同时也易于机器解析和⽣成。

Json简单来说就是JS中的对象和数组,所以Json也存在两种结构:对象、数组。

Json对象:Json对象定义在花括号“{}”内,以Key:value键值对的形式存放数据,多个数据使⽤分号“;”分割。

⼆、序列化Object obj = Serialization.JsonToObject<Object>(strJson);三、反序列化strJson = Serialization.ObjectToJSON(obj);四、⼯具类public static class Serialization{public static T JsonToObject<T>(string jsonText){DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));T result = (T)((object)dataContractJsonSerializer.ReadObject(memoryStream));memoryStream.Dispose();return result;}public static string ObjectToJSON<T>(T obj){DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));string result = string.Empty;using (MemoryStream memoryStream = new MemoryStream()){dataContractJsonSerializer.WriteObject(memoryStream, obj);memoryStream.Position = 0L;using (StreamReader streamReader = new StreamReader(memoryStream)){result = streamReader.ReadToEnd();}}return result;}}。

Json的序列化和反序列化

Json的序列化和反序列化

Json 的序列化和反序列化⼀.什么是Json : 中午肚⼦饿了,到餐厅点餐。

向服务员点了⼏个菜,厨师根据⽤户的需求,开始烹饪⾷物,⾷物烹饪好后,怎么将⾷物呈现给⽤户呢?这时就需要⽤到盛放⾷物的碗了。

⽤户拿到盛放⾷物的碗,就可以获得点的餐了。

这个碗就充当了数据交换的容器了(^-^) 客户端向服务器端发送请求后,服务器端怎么才能把⽤户需要的数据返回给客户端呢。

这时我们就需要⽤⼀个指定的格式将数据,按照指定格式返回客户端。

这时就有了两种数据传输的⽅式(XML 和Json ): 在普通的Web 应⽤中,不管是服务器端还是客户端解析XML 代码会⾮常⿇烦,所以这时Json 就更加满⾜数据传输解析的要求。

采⽤Json 格式的⽅式进⾏数据的传输,不仅⽅便传输解析,还特别易于⼈阅读和编写⼆.XML 与Json 转换:1.常规转换:<emp ><name >fxhl </name ><city >深圳</city ><age >23</age ></emp >转换为Json 为: {“name”:“fxhl”,"city":"深圳","age":23}三.Json 的表现形式: 1.对象:{"returnCode": "R0000","returnMsg": "成功","lessTimes": "2","domainLink": "","seqNum": "1","identification": "595279","isNeedImageCode": "false"} 2.数组:{"employees": [{ "firstName":"John" , "lastName":"Doe" },{ "firstName":"Anna" , "lastName":"Smith" },{ "firstName":"Peter" , "lastName":"Jones" }]} 3.数组对象混合: 这是截取的⼀⼩部分,对于⽐较复杂的Json 格式的字符串,可以在线验证json 。

json序列化和反序列化方法

json序列化和反序列化方法

json序列化和反序列化方法JSON(JavaScriptObjectNotation,即JavaScript对象表示法)是一种轻量级的文本标记语言,它基于JavaScript语法来表示《键值对》中的数据结构,并且广泛的被用来传输、存储和交换数据信息。

随着网络服务的发展,JSON也正在被越来越多的程序语言所支持,序列化和反序列化技术可以实现将复杂的对象或结构转换成JSON格式的字符串,以便于在不同的程序中相互传输或存储,本文将主要介绍JSON序列化和反序列化方法。

1、JSON序列化JSON序列化是指将复杂的对象或结构转换成JSON格式的字符串,以便于在不同的程序中相互传输或存储,常用的序列化方法有以下几种:(1)JSON.stringifyJSON.stringify是JSON对象的一个静态方法,其作用是将JavaScript的值(对象或数组)转换为JSON格式的字符串,其语法为:JSON.stringify(value[, replacer[, space]])其中,value为要转换的值,replacer为选填参数,space为选填参数。

例如,将一个JavaScript对象转换为JSON格式的字符串,可以使用JSON.stringify方法:var obj = { na John age: 20 };var str = JSON.stringify(obj);console.log(str); // {ameJohnage20}(2)jQuery.stringifyjQuery.stringify()也是一种序列化对象或数组的方法,其语法与JSON.stringify()大致相同:jQuery.stringify(obj[, replacer[, space]])不同的是,jQuery.stringify()可以将任意类型的JavaScript 对象转换成JSON格式字符串,而JSON.stringify()仅在转换对象或数组时有效。

json相关注解和序列化与反序列化

json相关注解和序列化与反序列化

json相关注解和序列化与反序列化使⽤jackson进⾏序列化时,往往会遇到后台某个实体对象的属性为null,当序列化成json时对应的属性也为null,可以⽤以下的注解⽅式完成当属性为null时不参与序列化:@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)@JsonIgnoreProperties类注解,作⽤是json序列化时将bean中的⼀些属性忽略掉,序列化和反序列化都受影响。

@JsonIgnore作⽤于属性或字段上,当⽣成json时忽略有该annotation的⽅法或字段。

@JsonProperty("rename")作⽤于属性或字段上,对其重命名。

@JsonFormat作⽤于属性或字段上,⽅便把Date类型直接转化为我们想要的模式,如@JsonFormat(pattern="yyyy-MM-dd HH-mm-ss")@JsonSerialize作⽤于属性或字段上,指定序列化⽅式。

例如:@JsonSerialize(as=BasicType.class)将类型序列化成指定类型;@JsonSerialize(using=CustomDoubleSerialize.class)⽤于在序列化时嵌⼊我们⾃定义的代码,⽐如序列化⼀个double时在其后限制两位⼩数。

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)//保证序列化json的时候,如果是null的对象,key也会消失//⽐如在创建失败的时候,只需要将status和msg显⽰出来,但是如果不加上⾯的注解会将data也显⽰出来,其值会显⽰null@JsonDeserialize作⽤于属性或字段上,指定反序列化⽅式。

例如:@JsonDeserialize(as=ValueImpl.class)将类型反序列化成指定类型;@JsonDeserialize(using=CustomDateDeserialize.class)⽤于在反序列化时嵌⼊我们⾃定义的代码。

cpp程序使用jsoncpp对json格式数据序列化和反序列化操作

cpp程序使用jsoncpp对json格式数据序列化和反序列化操作

cpp程序使用jsoncpp对json格式数据序列化和反序列化操作JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端之间的数据传输。

C++中有一款开源的JSON库叫做jsoncpp,它提供了便捷的接口来进行JSON数据的序列化和反序列化操作。

JSON的序列化是指将C++对象的数据转换为JSON格式的字符串,而JSON的反序列化是指将JSON格式的字符串转换为C++对象。

下面是一个使用jsoncpp进行序列化和反序列化的示例代码:```cpp#include <iostream>#include <json/json.h>int mai// 创建一个Json::Value对象,表示一个JSON数据Json::Value jsonData;//设置JSON数据的字段和值jsonData["name"] = "John";jsonData["age"] = 25;jsonData["gender"] = "male";// 将Json::Value对象序列化为JSON格式的字符串Json::StreamWriterBuilder writerBuilder;std::string jsonString = Json::writeString(writerBuilder, jsonData);std::cout << "Serialized JSON: " << jsonString << std::endl;// 反序列化JSON字符串为Json::Value对象Json::CharReaderBuilder readerBuilder;Json::Value parsedData;std::string errorMessage;// 使用jsoncpp的Json::parseFromStream函数解析JSON字符串std::istringstream jsonStream(jsonString);if (!Json::parseFromStream(readerBuilder, jsonStream,&parsedData, &errorMessage))std::cout << "Failed to parse JSON string: " << errorMessage << std::endl;return 1;}// 从Json::Value对象中获取字段的值std::string name = parsedData["name"].asString(;int age = parsedData["age"].asInt(;std::string gender = parsedData["gender"].asString(;//输出反序列化后的数据std::cout << "Deserialized JSON: " << std::endl;std::cout << "Name: " << name << std::endl;std::cout << "Age: " << age << std::endl;std::cout << "Gender: " << gender << std::endl;return 0;```在上面的示例代码中,首先创建一个Json::Value对象(jsonData),并通过使用[]运算符为其添加字段和值。

Json序列化和反序列化方法解析

Json序列化和反序列化方法解析

Json序列化和反序列化⽅法解析复制代码代码如下:/// <summary>/// Json序列化,⽤于发送到客户端/// </summary>public static string ToJsJson(this object item){DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType()); using (MemoryStream ms = new MemoryStream()){serializer.WriteObject(ms, item);StringBuilder sb = new StringBuilder();sb.Append(Encoding.UTF8.GetString(ms.ToArray()));return sb.ToString();}}/// <summary>/// Json反序列化,⽤于接收客户端Json后⽣成对应的对象/// </summary>public static T FromJsonTo<T>(this string jsonString){DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));T jsonObject = (T)ser.ReadObject(ms);ms.Close();return jsonObject;}实体类复制代码代码如下:[DataContract]public class TestObj{[DataMember]public string make { get; set; }[DataMember]public string model { get; set; }[DataMember]public int year { get; set; }[DataMember]public string color { get; set; }}------------------javascript获取Json--------------------javascript调⽤测试代码复制代码代码如下:$('#getJson').click(function() {$.ajax({url: "getJsonHandler.ashx",type: 'GET',data: {},dataType: 'json',timeout: 1000,error: function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus) },success: function(result) {alert(result.make);alert(result.model);alert(result.year);alert(result.color);}});});C#后台⽣成代码复制代码代码如下:public class getJsonHandler: IHttpHandler{public void ProcessRequest(HttpContext context){TestObj obj = new TestObj();obj.make = "Make is Value";obj.model = "Model is Value";obj.year = 999;obj.color = "Color is Value";context.Response.Write(obj.ToJsJson());}public bool IsReusable{get{return false;}}}//返回值为 {"color":"Color is Value","make":"Make is Value","model":"Model is Value","year":999}-----------------C#由Json⽣成对象-----------------------javascript调⽤测试代码复制代码代码如下:$('#postJson').click(function() {var m_obj = { make: "Dodge", model: "Coronet R/T", year: 1968, color: "yellow" };var jsonStr = JSON.stringify(m_obj); //⽤Json2.js⽣成Json字符串$.ajax({url: "postJsonHandler.ashx",type: 'POST',data: { postjson: jsonStr },dataType: 'json',timeout: 1000,error: function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus) },success: function(result) {alert(result.success);}});});C#后台⽣成代码复制代码代码如下:public class postJsonHandler: IHttpHandler{public void ProcessRequest(HttpContext context){string jsonStr = context.Request["postjson"];TestObj obj = jsonStr.FromJsonTo<TestObj>();if (string.IsNullOrEmpty(obj.make) || string.IsNullOrEmpty(obj.model) || string.IsNullOrEmpty(obj.color)|| obj.year < 0){context.Response.Write("{success:false}");}else{context.Response.Write("{success:true}");}public bool IsReusable{get{return false;}}}使⽤Json时需要注意,服务器端拼凑⽣成Json字符串时,⼀定要注意把字符串⽤\"\"包裹,不然客户端接收时肯定会报错,根据Json 字符串⽣成对象,是根据对应的名称赋值,多于或少于都不会报错.。

json 序列化和反序列化理解

json 序列化和反序列化理解

json 序列化和反序列化理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于阅读和编写,同时也易于机器解析和生成。

在编程中,我们常常需要将对象(如Java对象、Python对象等)转换为JSON格式,或者将JSON格式的数据转换回对象。

这个过程被称为序列化和反序列化。

1. JSON 序列化:序列化是指将对象转换为JSON 格式的过程。

在这个过程中,对象的数据被转换为一个字符串,这个字符串遵循JSON 的语法规则。

例子(Python):```pythonimport json# 定义一个Python字典对象data = {"name": "John","age": 30,"city": "New York"}# 使用json.dumps进行序列化json_data = json.dumps(data)print(json_data)# 输出: {"name": "John", "age": 30, "city": "New York"}```在这个例子中,`json.dumps` 方法将Python 字典对象`data` 序列化为一个JSON 字符串。

2. JSON 反序列化:反序列化是指将JSON 格式的字符串转换回对象的过程。

在这个过程中,JSON 字符串被解析,并且对象的数据结构被还原。

例子(Python):```pythonimport json# 定义一个JSON格式的字符串json_data = '{"name": "John", "age": 30, "city": "New York"}'# 使用json.loads进行反序列化data = json.loads(json_data)print(data)# 输出: {'name': 'John', 'age': 30, 'city': 'New York'}```在这个例子中,`json.loads` 方法将JSON 字符串`json_data` 反序列化为一个Python 字典对象。

Python中的序列化和反序列化技巧

Python中的序列化和反序列化技巧

Python中的序列化和反序列化技巧序列化是将对象转化为可存储或传输的形式,反序列化则是将序列化后的对象恢复为原始形式的过程。

在Python中,序列化和反序列化是非常常见的操作,本文将介绍一些Python中序列化和反序列化的技巧。

一、JSON序列化和反序列化JSON是一种轻量级的数据交换格式,广泛应用于前后端数据传输。

Python中的json模块提供了序列化和反序列化的功能,非常方便易用。

1. 序列化为JSON使用json.dumps()函数可以将Python对象序列化为JSON字符串。

例如,将一个字典对象序列化为JSON字符串的示例代码如下:```pythonimport jsondata = {'name': 'Alice', 'age': 20}json_str = json.dumps(data)print(json_str)```输出结果为:{"name": "Alice", "age": 20}2. 反序列化为Python对象使用json.loads()函数可以将JSON字符串反序列化为Python对象。

例如,将一个JSON字符串反序列化为字典对象的示例代码如下:```pythonjson_str = '{"name": "Alice", "age": 20}'data = json.loads(json_str)print(data)```输出结果为:{'name': 'Alice', 'age': 20}二、pickle序列化和反序列化pickle是Python中的一种序列化和反序列化模块,可以将Python对象序列化为字节流,也可以将字节流反序列化为Python对象。

Json怎么实现序列化与反序列化

Json怎么实现序列化与反序列化

Json怎么实现序列化与反序列化Json怎么实现序列化与反序列化这次给⼤家带来Json怎么实现序列化与反序列化(附代码),Json实现序列化与反序列化的注意事项有哪些,下⾯就是实战案例,⼀起来看⼀下。

什么是JSON?JSON(JavaScriptObjectNotation)isaligh tweightdata-interchangeformat.Itiseasyforhumanstoreadan dwriteandeasyformachinestoparseandgenerate.JSONisate xtformatthatiscompletelylanguageindependent.翻译:Json【javascript对象表⽰⽅法】,它是⼀个轻量级的数据交换格式,我们可以很简单的来读取和写它,并且它很容易被计算机转化和⽣成,它是完全独⽴于语⾔的。

Json⽀持下⾯两种数据结构:键值对的集合--各种不同的编程语⾔,都⽀持这种数据结构;有序的列表类型值的集合--这其中包含数组,集合,⽮量,或者序列,等等。

Json有下⾯⼏种表现形式1.对象⼀个没有顺序的“键/值”,⼀个对象以花括号“{”开始,并以花括号"}"结束,在每⼀个“键”的后⾯,有⼀个冒号,并且使⽤逗号来分隔多个键值对。

例如:1var? user={"name":"Manas","gender":"Male","birthday":"1987-8-8"}2.数组设置值的顺序,⼀个数组以中括号"["开始,并以中括号"]"结束,并且所有的值使⽤逗号分隔例如:12var?userlist=[{"user":{"name":"Ma nas","gender":"Male","birthday":"1987-8-8"}},{"user":{"name":"Moh apatra","Male":"Female","birthday":"1987-7-7"}}]3.字符串任意数量的Unicode字符,使⽤引号做标记,并使⽤反斜杠来分隔。

JsonJsonUtility对字典列表的序列化,反序列化

JsonJsonUtility对字典列表的序列化,反序列化

JsonJsonUtility对字典列表的序列化,反序列化Unity5.3从开始追加的JsonUtility,但是对于List 和Dictionary不能被直接序列化存储.例如:数据模型:using UnityEngine;using System;using System.Collections.Generic;[Serializable]public class Enemy{[SerializeField]string name;[SerializeField]List<string> skills;public Enemy(string name, List<string> skills){ = name;this.skills = skills;}}实际使⽤:List<Enemy> enemies = new List<Enemy>();enemies.Add(new Enemy("怪物1", new List<string>() { "攻击" }));enemies.Add(new Enemy("怪物2", new List<string>() { "攻击", "恢复" }));Debug.Log(JsonUtility.ToJson(enemies));输出为:{}输出是没有任何的json字符串。

------------------------------------------------------------------------------------------------在unity的官⽅⽹站,I继承的⽅法被提出,⽤的时候把此脚本放到项⽬⾥.// Serialization.csusing UnityEngine;using System.Collections;using System.Collections.Generic;using System;// List<T>[Serializable]public class Serialization<T>{[SerializeField]List<T> target;public List<T> ToList() { return target; }public Serialization(List<T> target){this.target = target;}}// Dictionary<TKey, TValue>[Serializable]public class Serialization<TKey, TValue> : ISerializationCallbackReceiver{[SerializeField]List<TKey> keys;[SerializeField]List<TValue> values;Dictionary<TKey, TValue> target;public Dictionary<TKey, TValue> ToDictionary() { return target; }public Serialization(Dictionary<TKey, TValue> target){this.target = target;}public void OnBeforeSerialize(){keys = new List<TKey>(target.Keys);values = new List<TValue>(target.Values);}public void OnAfterDeserialize(){var count = Math.Min(keys.Count, values.Count);target = new Dictionary<TKey, TValue>(count);for (var i = 0; i < count; ++i){target.Add(keys[i], values[i]);}}}使⽤:// List<T> -> Json ( 例 : List<Enemy> )string str = JsonUtility.ToJson(new Serialization<Enemy>(enemies)); // 输出 : {"target":[{"name":"怪物1,"skills":["攻击"]},{"name":"怪物2","skills":["攻击","恢复"]}]}// Json-> List<T>List<Enemy> enemies = JsonUtility.FromJson<Serialization<Enemy>>(str).ToList();// Dictionary<TKey,TValue> -> Json( 例 : Dictionary<int, Enemy> )string str = JsonUtility.ToJson(new Serialization<int, Enemy>(enemies)); // 输出 : {"keys":[1000,2000],"values":[{"name":"怪物1","skills":["攻击"]},{"name":"怪物2","skills":["攻击","恢复"]}]} // Json -> Dictionary<TKey,TValue>Dictionary<int, Enemy> enemies = JsonUtility.FromJson<Serialization<int, Enemy>>(str).ToDictionary();。

使用Json将对象集合序列化为Json字符,以及反序列为该对象集合

使用Json将对象集合序列化为Json字符,以及反序列为该对象集合

使⽤Json将对象集合序列化为Json字符,以及反序列为该对象集合由于在⽹络中传递的数据都是⼆进制的数据,⽽在c#中⽤的最⽅便的就是对象。

如果在⽹络中能够传递对象的话,那实在是⽅便不过了,但是实际是没有这样的办法。

但是我们可以将对象序列化特殊的字符对象,以便可以再转为流在⽹络中传输,然后在对⽅接受时,将该流转为特殊对象,通过反序列化转化为该对象,从⽽间接的实现传输对象的作⽤。

在.net4.0版本的System.Runtime.Serialization提供了可以是对象序列化为json字符以及将json字符序列化为对象的类:DataContractJsonSerializer;今天⾃⼰总结了如何将⼀个对象集合序列化为json字符,并且能够将该json字符反序列为该对象集合下⾯这段代码申明⼀个要传递的类People:///<summary>///对象类People///</summary>public class People{public int age;public string name;public string address;public static List<People> GetPeoles(){List<People> list = new List<People>{new People {age =20,name ="张三",address ="湖南"},new People {age =21,name ="李四",address ="湖南"},new People {age =22,name ="王五",address ="湖南"}};return list ;}}下⾯代码申明⼀个⽤DataContractJsonSerializer序列化和反序列的类public class JsonHelper{///<summary>///将对象转化为Json字符串///</summary>///<typeparam name="T">对象类型</typeparam>///<param name="obj">对象</param>///<returns>Json字符串</returns>public static string ObjectToJsonString<T>(T obj){DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());MemoryStream stream = new MemoryStream();json.WriteObject(stream, obj);stream.Seek(0, SeekOrigin.Begin);StreamReader sr = new StreamReader(stream);string str = sr.ReadToEnd();// string str= Encoding.UTF8 .GetString(stream.ToArray () );stream.Close();sr.Close();return str;}///<summary>///将多个对象的json字符对象转化为多个相应对象///</summary>///<typeparam name="T">对象类型</typeparam>///<param name="jsonString">多个对象的json字符</param>///<returns>对象集合</returns>public static List<T> JsonStringToObjects<T>(string jsonString){int startPostionL=0;int startPostionR = 0;//正则查找,得到对象的个数int objectCount = Regex.Matches(jsonString, "{").Count;List<T> list = new List<T>(objectCount);DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));while (objectCount > 0){MemoryStream ms = new MemoryStream();StreamWriter sw = new StreamWriter(ms);int indexLeft = jsonString.IndexOf("{", startPostionL);int indexRigth = jsonString.IndexOf("}", startPostionR);//截取⼀个json字符对象string oneJsonObect = jsonString.Substring(indexLeft, indexRigth - indexLeft + 1);sw.Write(oneJsonObect);sw.Flush();//清除编程缓冲区,将缓冲数据写⼊基础流中ms.Seek(0, SeekOrigin.Begin);T obj = (T)json.ReadObject(ms);list.Add(obj);ms.Close();sw.Close();startPostionL = indexLeft + 1;startPostionR = indexRigth + 1;objectCount--;}return list;}}///<summary>接下来的代码是程序⼊⼝的地⽅,看下⾯是如何来使⽤上⾯的类中的⽅法实现对象集合序列化为json字符对象以及json'字符对象还原为对象集合的static void Main(string[] args){//得到⼀个对象集合List<People> peopleList = People.GetPeoles();Console.WriteLine("将对象集合转化为Json字符串");string jsonString1 = JsonHelper.ObjectToJsonString(peopleList);Console.WriteLine(jsonString1);Console.WriteLine("将Json字符串转为对象jihe");List<People> List = ( List<People>)JsonHelper.JsonStringToObjects<People >(jsonString1) ;Console.WriteLine(List.Count);foreach (People ple in List){Console.WriteLine( + "," + ple.age);}Console.ReadKey();}结果如下:将对象集合转化为Json字符串[{"address":"湖南","age":20,"name":"张三"},{"address":"湖南","age":21,"name":"李四"},{"address":"湖南","age":22,"name":"王五"}]将Json字符串转为对象jihe张三,20李四,21王五,22这下就实现了字符序列与对象的相互转化了,从⽽使c#在⽹络传输实体数据的时候⼤⼤减轻⼯作的复杂度。

Json的序列化与反序列化

Json的序列化与反序列化

Json的序列化与反序列化⽅法⼀:引⼊System.Web.Script.Serialization命名空间使⽤ JavaScriptSerializer类实现简单的序列化//第⼀种序列化反序列化⽅式personel person = new personel() { Age = 13, Name = "我是序列化" };JavaScriptSerializer JsStringJson = new JavaScriptSerializer();//执⾏序列化string r9 = JsStringJson.Serialize(person);//执⾏反序列化personel Fperson = JsStringJson.Deserialize<personel>(r9);⽅法⼆:引⼊ System.Runtime.Serialization.Json命名空间使⽤ DataContractJsonSerializer类实现序列化//第⼆种序列化反序列化⽅式IList<personel> ListPerson = new List<personel>() { new personel() { Age = 16, Name = "郑序列" }, new personel() { Name = "反序列", Age = 48 } };DataContractJsonSerializer jsonString = new DataContractJsonSerializer(ListPerson.GetType());//序列化string toJson = "";using (MemoryStream strem = new MemoryStream()){jsonString.WriteObject(strem, ListPerson);toJson = Encoding.UTF8.GetString(strem.ToArray());}//反序列化using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(toJson))){DataContractJsonSerializer dcjs = new DataContractJsonSerializer(typeof(List<personel>));List<personel> peoeo = (List<personel>)dcjs.ReadObject(ms);}可以使⽤IgnoreDataMember:指定该成员不是数据协定的⼀部分且没有进⾏序列化,DataMember:定义序列化属性参数,使⽤DataMember 属性标记字段必须使⽤DataContract标记类否则DataMember标记不起作⽤。

Json序列化和反序列化(Newtonsoft)嵌套反序列化

Json序列化和反序列化(Newtonsoft)嵌套反序列化

Json序列化和反序列化(Newtonsoft)嵌套反序列化<1> 序列化单个实体对象(1)将本地⽂件中的数据反序列化成实体对象(2)将实体对象序列化.txt中json格式的数据为:{"Name":"张三","Age":20,"Address":"上海市徐汇区"}第⼀步:添加dll引⽤:Newtonsoft.Json.dll (⽹上下载⼀个)using Newtonsoft.Json;第⼆步:新建⼀个Student实体类:public class Student{ public string Name { get; set; } public int Age { get; set; } public string Address { get; set; }}Main⽅法:static void Main(string[] args){ string str = ""; using (StreamReader sw = new StreamReader(@"D:\student.txt", Encoding.Default)) { str = sw.ReadToEnd(); } if (!String.IsNullOrEmpty(str)) { //反序列化(将{"Name":"张三","Age":20,"Address":"上海市徐汇区"}转化成实体) Student st = JsonConvert.DeserializeObject<Student>(str); Console.WriteLine("反序列化:" + "Name:" + + ", Age:" + st.Age.ToString() + ", Address:" + st.Address); //序列化(将实体对象st转化成:{"Name":"张三","Age":20,"Address":"上海市徐汇区"}) string strSerialize = JsonConvert.SerializeObject(st); Console.WriteLine("序列化: " + strSerialize); } Console.Read();}运⾏结果如下:<2> 嵌套反序列化例如,需要序列化下⾯的json数据:string Content ={ "rc": 1, "re": [ { "id": 123, "name": "张三", "age": 20, } ]}需要定义下⾯两个实体类:public class UserNameInfo{ public int rc { get; set; } public List<UserInfo> re { get; set; } //注意:这⾥⼀定要⽤List<T>}public class UserInfo{ public int id { get; set; } public string name { get; set; } public int age { get; set; }}反序列化即可:var item = JsonUtil<UserNameInfo>.Deserialize(Content); //Content为要反序列化的Json格式的字符串。

第一章JacksonUtil序列化与反序列化属性总结

第一章JacksonUtil序列化与反序列化属性总结

第⼀章JacksonUtil序列化与反序列化属性总结1.json-lib与Jackson 关于json-lib与Jackson对⽐总结如下: 1).性能⽅⾯,Jackson的处理能⼒⾼出Json-lib10倍左右。

2).json-lib已经停⽌更新,最新的版本也是基于JDK1.5,⽽Jackson的社区则较为活跃。

3).json-lib依赖commons系列的包及 ezmorph包共 5个,⽽Jackson除⾃⾝的以外只依赖于commons-logging2.1 Jackson序列化与反序列化⽅法1 public static String encode(Object obj) {2 try {3 return objectMapper.writeValueAsString(obj);4 } catch (Exception e) {5 logger.error("jackson encode error:", e);6 }7 return null;8 }910 /**11 * 将json string反序列化成对象12 *13 * @param json14 * @param valueType15 * @return16 */17 public static <T> T decode(String json, Class<T> valueType) {18 try {19 return objectMapper.readValue(json, valueType);20 } catch (Exception e) {21 logger.error("jackson decode(String, Class<T>) error: ", e);22 }23 return null;24 }2526 /**27 * 将json array反序列化为对象28 *29 * @param json30 * @param typeReference31 * @return32 */33 public static <T> T decode(String json, TypeReference<T> typeReference) {34 try {35 return (T) objectMapper.readValue(json, typeReference);36 } catch (Exception e) {37 logger.error("decode(String, JsonTypeReference<T>)", e);38 }39 return null;40 }View Code2.2 Jackson⾃动检测机制 jackson默认的字段属性发现规则如下: 所有被public修饰的字段->所有被public修饰的getter->所有被public修饰的setter 若类中的⼀个private属性,且没有设置public的getter和setter⽅法,则对该类对象进⾏序列化时,默认不对这个private属性进⾏序列化。

使用Json.Net处理json序列化和反序列化接口或继承类

使用Json.Net处理json序列化和反序列化接口或继承类

使⽤处理json序列化和反序列化接⼝或继承类以前⼀直没有怎么关注过Newtonsoft的这个第三⽅的.NET Json框架,主要是我以前在开发项⽬的时候⼤多数使⽤的都是.NET⾃带的Json序列化类JavaScriptSerializer,但是最近在项⽬中需要序列化和反序列化⼀个实现接⼝的类,⽽如果使⽤JavaScriptSerializer的话就会出现问题,我们来看看如下场景。

⾸先我们有⼀个接⼝IPeople和⼀个实现了该接⼝的类Maninterface IPeople{string Name { get; set; }int Age { get; set; }}class Man : IPeople{public string Name { get; set; }public int Age { get; set; }}我们使⽤JavaScriptSerializer直接序列化IPeople接⼝IPeople poeple = new Man();poeple.Age = 25; = "Scott";JavaScriptSerializer jsSerializer = new JavaScriptSerializer();string textJson = jsSerializer.Serialize(poeple);poeple = jsSerializer.Deserialize<IPeople>(textJson);会得到序列化后的json⽂本textJson如下{"Name":"Scott","Age":25}我们可以看到在序列化后的json中没有任何属性说明这段json到底是由什么类序列化⽽来的,紧接着在JavaScriptSerializer执⾏jsSerializer.Deserialize<IPeople>(textJson)做反序列化的时候就抛出了异常提⽰IPeople没有默认⽆参构造函数,也就是说JavaScriptSerializer不知道应该把textJson中的json反序列化为类Man。

json的序列化与反序列化

json的序列化与反序列化

json的序列化与反序列化json 是一种轻量级的数据交换格式,也是完全独立于任何程序语言的文本格式。

本文介绍json字符串的序列化与反序列化问题。

o序列化是指将变量(对象)从内存中变成可存储或可传输的过程。

o反序列化是指将变量内容从序列化的对象重新读到内存里的过程。

1、在json模块中,dump()和dumps()都实现了序列化。

dump():将dict对象序列化到文件中(文件中存储json字符串)。

import jsona_dict = {'a': 11, 'b': 22}a_str = json.dump(a_dict, open('demo.json', 'w'))dumps():将dict对象序列化为json字符串,仍在内存中。

import jsona_dict = {'a': 11, 'b': 22}a_str = json.dumps(a_dict)print(type(a_dict)) # <class 'dict'>print(type(a_str)) # <class 'str'>2、在json模块中,load()和loads()都实现反序列化。

load():针对文件句柄,从文件中读取json字符转换为dict。

import jsona_json = json.load(open('demo.json', 'r'))print(type(a_json)) # <class 'dict'>print(a_json) # {'a': 11, 'b': 22}loads():针对内存对象,将json字符串转换为dict。

import jsona_str = '{"a": 11, "b": 22}'a_json = json.loads(a_str)print(type(a_json)) # <class 'dict'>print(a_json) # {'a': 11, 'b': 22}注意:json字符串的key为单引号时,用json.loads()会报错。

python接口测试之序列化与反序列化

python接口测试之序列化与反序列化

python接⼝测试之序列化与反序列化在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象。

在python的标准库中,专门提供了json库与pickle库来处理这部分。

先来学习json的库,导⼊json库很简单,直接import json,下⾯通过具体的实例来说明json库对序列化与反序列化的使⽤。

json库的主要⽅法为:#!/usr/bin/env python#coding:utf-8import jsonprint json.__all__见json库的主要⽅法:['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']我们定义⼀个字典,通过json把它序列化为json格式的字符串,见实现的代码:#!/usr/bin/env python#coding:utf-8import jsondict1={'name':'wuya','age':22,'address':'xian'}print u'未序列化前的数据类型为:',type(dict1)print u'未序列化前的数据:',dict1#对dict1进⾏序列化的处理str1=json.dumps(dict1)print u'序列化后的数据类型为:',type(str1)print u'序列化后的数据为:',str1见如上的代码输出的内容:1 2 3 4 5 6 7C:\Python27\python.exe D:/git/Python/doc/index.py未序列化前的数据类型为: <type'dict'>未序列化前的数据: {'age': 22, 'name': 'wuya', 'address': 'xian'}序列化后的数据类型为: <type'str'>序列化后的数据为: {"age": 22, "name": "wuya", "address": "xian"} Process finished with exit code 0通过如上的代码以及结果可以看到,这就是⼀个序列化的过程,简单的说就是把python的数据类型转换为json格式的字符串。

利用Newtonsoft.Json实现Json序列化与反序列化

利用Newtonsoft.Json实现Json序列化与反序列化

利⽤Newtonsoft.Json实现Json序列化与反序列化在项⽬中⽤到了Newtonsoft.Json来实现序列化和反序列化,在这⾥写下实现代码。

1、创建类⽤于排除不序列化的属性public class ExcludePropertiesContractResolver : DefaultContractResolver{IEnumerable<string> lstExclude;public ExcludePropertiesContractResolver(IEnumerable<string> excludedProperties){lstExclude = excludedProperties;}protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization){return base.CreateProperties(type, memberSerialization).ToList().FindAll(p => !lstExclude.Contains(p.PropertyName));}}2、序列化⽅法以下分别是将对象、DataTable、集合序列化为Json字符串的⽅法:/// <summary>/// T对象转换成json字符串/// </summary>/// <typeparam name="T"></typeparam>/// <param name="obj"></param>/// <returns></returns>public static string GetJsonString<T>(T obj, params string[] ignoreFields){IsoDateTimeConverter iso = new IsoDateTimeConverter();iso.DateTimeFormat = "yyyy-MM-ddTHH:mm:ss";iso.DateTimeStyles = System.Globalization.DateTimeStyles.AssumeLocal;string jsonStr = string.Empty;JsonSerializerSettings js = new JsonSerializerSettings();if (ignoreFields != null && ignoreFields.Length > 0){List<string> ignoreList = ignoreFields.ToList();js.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;js.ContractResolver = new ExcludePropertiesContractResolver(ignoreList);}js.Converters.Add(iso);jsonStr = JsonConvert.SerializeObject(obj, Formatting.Indented, js);return jsonStr;}/// <summary>/// DataTable对象转换成json字符串/// </summary>/// <param name="dt"></param>/// <returns></returns>public static string GetJsonString(DataTable dt, params string[] ignoreFields){IsoDateTimeConverter iso = new IsoDateTimeConverter();iso.DateTimeFormat = "yyyy-MM-ddTHH:mm:ss";iso.DateTimeStyles = System.Globalization.DateTimeStyles.AssumeLocal;string jsonStr = string.Empty;JsonSerializerSettings js = new JsonSerializerSettings();if (ignoreFields != null && ignoreFields.Length > 0){List<string> ignoreList = ignoreFields.ToList();js.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;js.ContractResolver = new ExcludePropertiesContractResolver(ignoreList);}js.Converters.Add(new DataTableConverter());js.Converters.Add(iso);jsonStr = JsonConvert.SerializeObject(dt, Formatting.Indented,js);return jsonStr;}/// <summary>/// List对象转换成json字符串/// </summary>/// <param name="dt"></param>/// <returns></returns>public static string GetJsonString<T>(List<T> list, params string[] ignoreFields){IsoDateTimeConverter iso = new IsoDateTimeConverter();iso.DateTimeFormat = "yyyy-MM-ddTHH:mm:ss";iso.DateTimeStyles = System.Globalization.DateTimeStyles.AssumeLocal; string jsonStr = string.Empty;JsonSerializerSettings js = new JsonSerializerSettings();if (ignoreFields != null && ignoreFields.Length > 0){List<string> ignoreList = ignoreFields.ToList();js.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;js.ContractResolver = new ExcludePropertiesContractResolver(ignoreList); }js.Converters.Add(iso);jsonStr = JsonConvert.SerializeObject(list, Formatting.Indented, js);return jsonStr;}View Code3、反序列化以下是将Json字符串反序列化为对象、集合的⽅法。

PythonJson序列化与反序列化

PythonJson序列化与反序列化

PythonJson序列化与反序列化 在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象。

在python的标准库中,专门提供了json库与pickle库来处理这部分。

json的dumps⽅法和loads⽅法,可实现数据的序列化和反序列化。

具体来说,dumps⽅法,可将json格式数据序列为的相关的数据类型;loads⽅法则是相反,把python数据类型转换为json相应的数据类型格式要求。

在序列化时,中⽂汉字总是被转换为unicode码,在dumps函数中添加参数ensure_ascii=False即可解决。

下⾯是json的序列化与反序列化: 1、Json序列化如下:1import json2print (json.__all__) #查看json库的所有⽅法3 ['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder'] 未在dumps函数中添加参数ensure_ascii=False,结果如下:1#coding: utf-82import json34 dict = {'name':'zhangsan', 'age':33, 'address':'红星路'}5print('未序列化前的数据类型为:', type(dict))6print('为序列化前的数据:', dict)7#对dict进⾏序列化的处理8 dict_xu = json.dumps(dict) #直接进⾏序列化9print('序列化后的数据类型为:', type(dict_xu))10print('序列化后的数据为:', dict_xu)1112 ----------------------------------------------------------------13未序列化前的数据类型为: <class'dict'>14为序列化前的数据: {'name': 'zhangsan', 'address': '红星路', 'age': 33}15序列化后的数据类型为: <class'str'>16序列化后的数据为: {"name": "zhangsan", "address": "\u7ea2\u661f\u8def", "age": 33} 在dumps函数中添加参数ensure_ascii=False,结果如下:1#coding: utf-82import json34 dict = {'name':'zhangsan', 'age':33, 'address':'红星路'}5print('未序列化前的数据类型为:', type(dict))6print('为序列化前的数据:', dict)7#对dict进⾏序列化的处理8 dict_xu = json.dumps(dict,ensure_ascii=False) #添加ensure_ascii=False进⾏序列化9print('序列化后的数据类型为:', type(dict_xu))10print('序列化后的数据为:', dict_xu)11 -------------------------------------------------------------------12未序列化前的数据类型为: <class'dict'>13为序列化前的数据: {'address': '红星路', 'age': 33, 'name': 'zhangsan'}14序列化后的数据类型为: <class'str'>15序列化后的数据为: {"address": "红星路", "age": 33, "name": "zhangsan"} 2、Json反序列化如下:1#coding: utf-82import json34 dict = {'name':'zhangsan', 'age':33, 'address':'红星路'}5print('未序列化前的数据类型为:', type(dict))6print('为序列化前的数据:', dict)7#对dict进⾏序列化的处理8 dict_xu = json.dumps(dict,ensure_ascii=False) #添加ensure_ascii=False进⾏序列化9print('序列化后的数据类型为:', type(dict_xu))10print('序列化后的数据为:', dict_xu)11#对dict_xu进⾏反序列化处理12 dict_fan = json.loads(dict_xu)13print('反序列化后的数据类型为:', type(dict_fan))14print('反序列化后的数据为: ', dict_fan)15 ----------------------------------------------------------------------16未序列化前的数据类型为: <class'dict'>17为序列化前的数据: {'name': 'zhangsan', 'age': 33, 'address': '红星路'}18序列化后的数据类型为: <class'str'>19序列化后的数据为: {"name": "zhangsan", "age": 33, "address": "红星路"}20反序列化后的数据类型为: <class'dict'>21反序列化后的数据为: {'name': 'zhangsan', 'age': 33, 'address': '红星路'} 在实际的⼯作中,序列化或者反序列化的可能是⼀个⽂件的形式,不可能像如上写的那样简单的,下来就来实现这部分,把⽂件内容进⾏序列化和反序列化,先来看序列化的代码,两步操作:1、先序列化列表对象;2、步把序列化成的字符串写⼊⽂件:1#coding: utf-82import json34 list = ['Apple','Huawei','selenium','java','python']5#把list先序列化,写⼊到⼀个⽂件中6# 两步操作 1步先序列化列表对象 2步把序列化成的字符串写⼊⽂件7 json.dump(list, open('e:/test.txt','w'))8 r1=open('e:/test.txt','r')9print(r1.read())10 -------------------------------------------------------------------11 ["Apple", "Huawei", "selenium", "java", "python"]反序列化,两步操作:1、先读取⽂件的字符串对象;2、然后反序列化成列表对象:1#coding: utf-82import json34 list = ['Apple','Huawei','selenium','java','python']5#把list先序列化,写⼊到⼀个⽂件中6# 两步操作 1步先序列化列表对象 2步把序列化成的字符串写⼊⽂件7 json.dump(list, open('e:/test.txt','w'))8 r1=open('e:/test.txt','r')9print(r1.read())10#------------------------------------------------------------11#两步操作:1、先读取⽂件的字符串对象;2、然后反序列化成列表对象12 res=json.load(open('e:/test.txt','r'))13print (res)14print('数据类型:',type(res))15 -------------------------------------------------------------16 ["Apple", "Huawei", "selenium", "java", "python"]17 ['Apple', 'Huawei', 'selenium', 'java', 'python']18数据类型: <class'list'>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用json-lib完成json的序列化和反序列化2011-07-29 14:07:43分类:默认分类 | 标签:软件 java json.json的序列化和反序列化在现在的javaweb中特别是ajax中使用的比较频繁,现在本人就这种技术提出自己的使用心得。

我的pojo对象的结构是这样的部门表和员工表 1对多的关系部门对象public class Dept implements java.io.Serializable {private Integer depid;//部门IDprivate String depname;//部门名称private Set emps = new HashSet(0);//员工集合}员工对象public class Emp implements java.io.Serializable {private Integer empid;//员工idprivate Dept dept;//部门private String empname;//员工名称private Date birthday;//生日}1.json字符串序列化成对象/***通过json转换成对象*@author凤生禾予*/public void jsonToObject(){Date d=new Date();SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");StringBuffer str=new StringBuffer();// json字符串str.append("{empid:1,dept:{depid:1,depname:'开发部'},empname:'张三',birthday:'"+sdf.format(d)+"'}");// 使用JSONObject将json序列化对象JSONObject obj=JSONObject.fromObject(str.toString());// 将JOSNObject对象转换成pojo对象Emp emp=(Emp) JSONObject.toBean(obj,Emp.class);System.out.println(emp.getBirthday());}这里需要注意的是json字符串的写法以{}表示一个对象,字符串必须加引号2json字符串序列化成集合/***通过json转换成集合*@author凤生禾予*/public void jsonToArray(){Date d=new Date();SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");StringBuffer str=new StringBuffer();//json字符串str.append("[");str.append("{empid:1,dept:{depid:1,depname:'开发部'},empname:'张三',birthday:'"+sdf.format(d)+"'}");str.append(",");str.append("{empid:2,dept:{depid:1,depname:'开发部'},empname:'李四',birthday:'"+sdf.format(d)+"'}");str.append("]");//将json转换成JSONArray对象JSONArray arr=JSONArray.fromObject(str.toString());//使用JSONArray转换成集合List<Emp> list=JSONArray.toList(arr,Emp.class);for (Emp emp : list) {System.out.println(emp.getEmpname());System.out.println(emp.getBirthday());System.out.println(emp.getDept().getDepname());}}这里需要注意的是json的数组用法为[]3.对象反序列化成json/***通过对象转换成json*@author凤生禾予*/public void objectToJson(){ClassPathXmlApplicationContext xa=newClassPathXmlApplicationContext("applicationContext.xml");EmpDAO dao=(EmpDAO) xa.getBean("EmpDAO");//查找对象Emp emp=dao.findById(27);String s=JSONObject.fromObject(emp).toString();System.out.println(s);}这里会有2个问题1.pojo中对象存在有死循环问题,部门类中有员工对象的集合,员工类中有部门的对象,json-lib 反序列化中会进行双向转换,从而形成死循环,会报一个json-lib的经典异常:Exception in thread "main" net.sf.json.JSONException: There is a cycle in the hierarchy!2.日期类型转换json-lib转换出来的日期类型格式"birthday":{"date":1,"day":0,"hours":0,"minutes":0,"month":7,"nanos":0, "seconds":0,"time":1280592000000,"timezoneOffset":-480,"year":110}那么我们如果想要yyyy-MM-dd HH:mm:ss 这种格式的怎么办呢?那么解决方案有3个都必须使用jsonConfig对象进行处理(1)使用jsonConfig的setExcludes的方法进行过滤,将所需要过滤的字段名传入setExcludes方法public void objectToJson(){ClassPathXmlApplicationContext xa=newClassPathXmlApplicationContext("applicationContext.xml");EmpDAO dao=(EmpDAO) xa.getBean("EmpDAO");//查找对象Emp emp=dao.findById(27);//创建jsonConfig对象JsonConfig config=new JsonConfig();//设置过滤字段config.setExcludes(new String[]{"dept"});String s=JSONObject.fromObject(emp,config).toString();System.out.println(s);}(2)使用jsonConfig的setJsonPropertyFilter进行属性过滤,过滤器中返回true表示过滤该字段,返回false表示可以转换该字段public void objectToJson(){ClassPathXmlApplicationContext xa=newClassPathXmlApplicationContext("applicationContext.xml");EmpDAO dao=(EmpDAO) xa.getBean("EmpDAO");//查找对象Emp emp=dao.findById(27);//创建jsonConfig对象JsonConfig config=new JsonConfig();//设置过滤字段config.setJsonPropertyFilter(new PropertyFilter() {public boolean apply(Object arg0, String arg1, Object arg2) { if("dept".equals(arg1)){return true;}return false;}});String s=JSONObject.fromObject(emp,config).toString();System.out.println(s);}上述两种解决方案可以解决部分问题,但是json-lib使用代理进行反射,所以如果想要部门表的信息,而去过滤部门表的员工对象,这样还是解决不了。

这样可以使用更简单有效的方案(3)使用jsonConfig的setCycleDetectionStrategy()方法进行忽略死循环使用jsonConfig的registerJsonValueProcessor()进行属性转换设置/***通过对象转换成json*@author凤生禾予*/public void objectToJson(){ClassPathXmlApplicationContext xa=newClassPathXmlApplicationContext("applicationContext.xml");EmpDAO dao=(EmpDAO) xa.getBean("EmpDAO");//查找对象Emp emp=dao.findById(27);//创建jsonConfig对象JsonConfig config=new JsonConfig();//设置循环策略为忽略解决json最头疼的问题死循环config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);//设置 json转换的处理器用来处理日期类型//凡是反序列化Date类型的对象,都会经过该处理器进行处理config.registerJsonValueProcessor(Date.class, new JsonValueProcessor() {//参数1 :属性名参数2:json对象的值参数3:jsonConfig对象public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");Date d=(Date) arg1;return sdf.format(d);}public Object processArrayValue(Object arg0, JsonConfig arg1) { return null;}});String s=JSONObject.fromObject(emp,config).toString();System.out.println(s);}这种方案可以解决死循环问题和日期格式化的问题。

相关文档
最新文档