猿问
下载APP

请问JSONUtil.serialize和JSON.toJSONString的区别?

JSONUtil.serialize和JSON.toJSONString的区别


哔哔one
浏览 333回答 4
4回答

慕工程0101907

JSONUtil.serialize(map)和JSON.toJSONString(map)的区别数据库查询出来的map有一个字段为空通过System.out.println()输出JSONUtil.serialize(map): {"one":"1","two":"null","three":"3","four":"4","five":"5"}JSON.toJSONString(map): {"one":"1","three":"3","four":"4","five":"5"}jsp页面Js的eval()方法:var jsonObj = eval("("+jsonStr+")");//如果使用JSONUtil.serialize(map)可以输出空串,如果是JSON.toJSONString(map)会报错jsonObj.two;jquery-1.9.1.js的val()源码如下val: function( value ) {var ret, hooks, isFunction,elem = this[0];if ( !arguments.length ) {if ( elem ) {hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {return ret;}ret = elem.value;return typeof ret === "string" ?// handle most common string casesret.replace(rreturn, "") :// handle cases where value is null/undef or numberret == null ? "" : ret;}return;}

慕田峪9158850

需要导入两个jar包json-lib是用于转换json字符串的核心jar包,上面那个是辅助的。转换json数组就是JSONArray.fromObject(arrayList).toString();转换json对象就是JSONObject.fromObject(arrayList).toString();

炎炎设计

调试一个程序时发现用jQuery的ajax方法和post方法分别发送请求,在后台Servlet进行处理时结果是不一样的,比如用$.ajax方法发送请求时(data参数是一个JSON.stringify()处理后的字符串,而不是一个JSON对象

Qyouu

一、要引用System.ServiceModel.Web.dll与System.Runtime.Serialization.dll1、属性1)DataContractSurrogate:获取给定 IDataContractSurrogate 实例的当前活动代理项类型。代理项可以扩展序列化或反序列化过程。2)IgnoreExtensionDataObject :获取一个值,指定在反序列化时是否忽略未知数据以及在序列化时是否忽略 IExtensibleDataObject 接口。3)KnownTypes:获取一个类型集合,这些类型可呈现在使用此4)DataContractJsonSerializer: 实例序列化的对象图中。5)MaxItemsInObjectGraph :获取序列化程序通过一次读取或写入调用在对象图中序列化或反序列化的最大项数。2、方法1)IsStartObjec:已重载。 获取一个值,该值指定序列化程序是否可以读取对象。2)ReadObject:已重载。 反序列化 JSON(JavaScript 对象表示法)数据,并返回反序列化的对象。3)WriteEndObject:已重载。 将结束 XML 元素写入可映射到 JavaScript 对象表示法 (JSON) 的 XML 文档。4)WriteObject: 已重载。 将对象序列化为 JavaScript 对象表示法 (JSON) 文档。5)WriteObjectContent: 已重载。 将对象内容写入可映射到 JavaScript 对象表示法 (JSON) 的 XML,而不写入包装元素。6)WriteStartObject :已重载。 写入开始 XML 元素,以便将对象序列化为可映射到 JavaScript 对象表示法 (JSON) 的 XML。二、例子:class Program{static void Main(string[] args){DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person));//最常用的两个方法string str = "{\"Id\":1,\"Name\":\"刘备\",\"Age\":\"23\"}";Person p;using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(str))) //构造函数能够接受Stream参数,因此你可以用内存流,文件流等等创建{p = serializer.ReadObject(ms) as Person;}Console.WriteLine(p.Name); //输出刘备Person p2 = new Person(2, "关羽", 23);byte[] byteArr;using (MemoryStream ms = new MemoryStream()){serializer.WriteObject(ms, p2);byteArr = ms.ToArray();}Console.WriteLine(Encoding.UTF8.GetString(byteArr)); //输出 {"Age":23,"Id":1,"Name":"关羽"}Console.WriteLine(serializer.MaxItemsInObjectGraph); //2147483647 获取序列化程序通过一次读取或写入调用在对象图中序列化或反序列化的最大项数。Console.WriteLine(serializer.DataContractSurrogate); //输出 空白Console.WriteLine(serializer.IgnoreExtensionDataObject); //False 反序列化时是否忽略未知数据以及在序列化时是否忽略 IExtensibleDataObject 接口。Console.WriteLine(serializer.KnownTypes.Count); //输出 0 一个类型集合,这些类型可呈现在使用此 DataContractJsonSerializer 实例序列化的对象图中。//IsStartObject 已重载。 获取一个值,该值指定序列化程序是否可以读取对象。//WriteEndObject 已重载。 将结束 XML 元素写入可映射到 JavaScript 对象表示法 (JSON) 的 XML 文档。//WriteObjectContent 已重载。 将对象内容写入可映射到 JavaScript 对象表示法 (JSON) 的 XML,而不写入包装元素。//WriteStartObject 已重载。 写入开始 XML 元素,以便将对象序列化为可映射到 JavaScript 对象表示法 (JSON) 的 XML。Console.ReadKey();}}[DataContract] //对于使用DataContractJsonSerializer类而言,该属性是必须的public class Person{public Person(int id,string name,int age){Id = id;Age = age;Name = name;}[DataMember] //对于使用DataContractJsonSerializer类而言,该属性是必须的public int Id{get;set;}[DataMember]public string Name{get;set;}[DataMember]public int Age{get;set;}}
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答