为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

哔哔one 2019-06-25 19:19:35

JSONUtil.serialize和JSON.toJSONString的区别


查看完整描述

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 cases
ret.replace(rreturn, "") :
// handle cases where value is null/undef or number
ret == null ? "" : ret;
}
return;
}

查看完整回答
反对 回复 2019-06-29
?
慕田峪9158850

需要导入两个jar包

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

查看完整回答
反对 回复 2019-06-29
?
炎炎设计

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

查看完整回答
反对 回复 2019-06-29
?
Qyouu

一、要引用System.ServiceModel.Web.dll与System.Runtime.Serialization.dll
1、属性
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;
}
}

查看完整回答
反对 回复 2019-06-29

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信