当前位置: 首页>数据库>正文

jquery json是否存在某个元素 jquery定义json对象

1.json的工具包

json工具包能够将java对象转换成为json对象和xml文档,同样也可以将json、xml转换成Java对象,在这里我给大家介绍两种json工具包

1.1jackson

在将工具包导入之后,如下使用能够将java对象转换成json对象

对象形式

//创建几个对象
Student stu1=new Student("s001", "张三", null);
Student stu2=new Student("s002", "李四", null);
ObjectMapper om=new ObjectMapper();
 om.writeValueAsString(stu1);

将json对象输出的结果为{"sid":"s001","sname":"张三","tset":null}

数组形式

public static void main(String[] args) throws JsonProcessingException {
	//创建几个对象
Student stu1=new Student("s001", "张三", null);
Student stu2=new Student("s002", "李四", null);
ObjectMapper om=new ObjectMapper();
List<Student> ls=new ArrayList<>();
ls.add(stu1);
ls.add(stu2);
 System.out.println(om.writeValueAsString(ls));
}

结果为:[{"sid":"s001","sname":"张三","tset":null},{"sid":"s002","sname":"李四","tset":null}]

混合形式

public static void main(String[] args) throws JsonProcessingException {
	//创建几个学生对对象
Student stu1=new Student("s001", "张三", null);
Student stu2=new Student("s002", "李四", null);
//创建几个老师对象
Teacher tea1=new Teacher("t001", "老师1", null);
Teacher tea2=new Teacher("t002", "老师2", null);
ObjectMapper om=new ObjectMapper();
List<Student> ls=new ArrayList<>();
ls.add(stu1);
ls.add(stu2);
Map<String, Object> map=new HashMap<>();
map.put("stus", ls);
map.put("te", tea1);
 System.out.println(om.writeValueAsString(map));
}

结果为:{"te":{"sid":"t001","sname":"老师1","se":null},"stus":[{"sid":"s001","sname":"张三","tset":null},{"sid":"s002","sname":"李四","tset":null}]}

2.Fastjson

json对象都是一样的不同的工具包写法不同而已,在这里写一个例子供大家参考

输出的结果是一致的

package com.ywj.entity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Demo {
public static void main(String[] args) {
	//创建几个学生对对象
Student stu1=new Student("s001", "张三", null);
Student stu2=new Student("s002", "李四", null);
//创建几个老师对象
Teacher tea1=new Teacher("t001", "老师1", null);
Teacher tea2=new Teacher("t002", "老师2", null);
List<Student> ls=new ArrayList<>();
ls.add(stu1);
ls.add(stu2);
Map<String, Object> map=new HashMap<>();
map.put("stus", ls);
map.put("te", tea1);
/**
 * fastjson写法
 */
  System.out.println(JSON.toJSONString(map));

}
}

3.转换json时的死循环问题

我们用类来描述一下学生和老师之间多对多的关系,然后将其中的学生对象转换为json,这个时候会栈溢出

public class Demo {
	//我们将异常抛出方便阅读
public static void main(String[] args) throws JsonProcessingException {
	//创建几个学生对对象
Student stu1=new Student("s001", "张三", null);
Student stu2=new Student("s002", "李四", null);
//创建几个老师对象
Teacher tea1=new Teacher("t001", "老师1", null);
Teacher tea2=new Teacher("t002", "老师2", null);
/**
 * 一个老师对应多个学生
 */
Set<Student> stus=new HashSet<>();
stus.add(stu1);
stus.add(stu2);
tea1.setSe(stus);
/**
 * 一个学生对应多个老师
 */
Set<Teacher> teachers=new HashSet<>();
teachers.add(tea1);
teachers.add(tea2);
stu1.setTset(teachers);

/**
 * 我们将stu1学生对象转成json
 */
ObjectMapper om=new ObjectMapper();
om.writeValueAsString(stu1);

}

 报错为栈空间溢出:

Caused by: java.lang.StackOverflowError
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access0(Unknown Source)
	at java.net.URLClassLoader.run(Unknown Source)
	at java.net.URLClassLoader.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:613)
	... 1011 more

 解决方法有两种

1.由双向绑定改成单向绑定,也就说将彼此之间的关系交于一方维护

2.第二种是使用@JsonIgnore注解注释一下这样他到这就不会转换

private String sid;
private String sname;
/**
 * 一个学生可以对应多个老师
 */
@JsonIgnore
private Set<Teacher> tset=new HashSet<>();

 

3.jQuery使用ajax

$(function(){
	$.ajax({
		  type: "提交方式get or post",
		  url: "提交地址",
		  dataType: "json text xml  等",
		  data:{数据 name:date},
		   success: function(msg){
	//返回处理的方法
		   }
		   

		});
})

 

4.不使用实体类json对象的通用查询

这种查询的核心是    ResultSetMetaData metaData = rs.getMetaData();

由于json对象将Map转换之后和java对象转换之后的结果是一致的,所以可以使用

在类包含集合的情况下不能使用

List<Map<String, Object>> list = new ArrayList<>();
				/**
				 * 获取到源数据
				 */
				ResultSetMetaData metaData = rs.getMetaData();
				/**
				 *获取到有多少个列
				 */
				int columnCount = metaData.getColumnCount();
				Map<String, Object> map=null;//多次引用
				while(rs.next()) {
					map=new HashMap<String, Object>();
					for (int i = 1; i <=columnCount; i++) {
						/**
						 * 获取到列的名字作为键的值
						 */
						String key = metaData.getColumnName(i);
						map.put(key, rs.getObject(key));//用列名做键取值保存到map集合
					}
				list.add(map);
				}
				return list;
			}

这一行还是很舒服的啦。。。。

jquery json是否存在某个元素 jquery定义json对象,jquery json是否存在某个元素 jquery定义json对象_json,第1张

 

 


https://www.xamrdz.com/database/65w1963437.html

相关文章: