java list 转json 字符串_JSON的String字符串与Java的List列表对象的相互转换

1.JSON的String字符串与Java的List列表对象的相互转换

在前端:

1.如果json是List对象转换的,可以直接遍历json,读取数据。

2.如果是需要把前端的List对象转换为json传到后台,param是ajax的参数,那么转换如下所示:

var jsonStr = JSON.stringify(list);

var param= {};

param.jsonStr=jsonStr;

在后台:

import net.sf.json.JSONObject;

import net.sf.json.JSONArray;

1.把String转换为List(str转换为list)

List list = new ArrayList();

JSONArray jsonArray = JSONArray.fromObject(str);//把String转换为json

list = JSONArray.toList(jsonArray,t);//这里的t是Class

在这里,因为得到json字符串的时候用的是 JSONArray.fromObject(collenction),所有,在讲json字符串转换成json对象的时候,

也只能用JSONArray.toCollection,并且,一定要带上后面的class参数。

2.把List转换为json

JSONArray json = JSONArray.fromObject(object);

String str = json.toString();//把json转换为String

再如:

Teacher类中,有三个属性。

private String teaId;

private String teaName;

private List stus;

Teacher teacher_1 = new Teacher("编号1", "教师1", stus);

JSONObject obj = JSONObject.fromObject(teacher_1);

这一步,将Teacher 对象转换成json字符串的时候,没有任何的问题。下面,将JSONObject 转换成Teacher 对象,如果,不加后面的class参数,也会报这儿错误。加了后,这一步也正常。

Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class);

Student studentBean = teacherBean.getStus().get(0);

当从teacherBean 对象中取出stus属性的值时候,就会提示:

Java.lang.ClassCastException:net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.edu.xukai.Student

用这种方式可以解决:

Map classMap = new HashMap();

classMap.put("stus", Student.class);

Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class, classMap);

其中map对象是teacherBean对象中各个属性的类型,map额key是属性每次,value是属性的类型。

JSONArray.toArray(jsonArray, objectClass, classMap)

JSONArray.toList(jsonArray, objectClass, classMap)

也支持这样的方式。

2. JSON 集合数据字符串转对象集合 及 对象集合转 JSON 字符串

import org.codehaus.jackson.JsonParseException;

import org.codehaus.jackson.map.JsonMappingException;

import org.codehaus.jackson.map.ObjectMapper;

import org.codehaus.jackson.type.TypeReference;

// 集合转 json

ArrayList list=new ArrayList();

StringWriter str=new StringWriter();

ObjectMapper objectMapper=new ObjectMapper();

objectMapper.writeValue(str, list);

System.out.println(str);

// json 转对象集合

ObjectMapper mapper = new ObjectMapper();

List list = mapper.readValue(str.toString(),

new TypeReference>() {});

3.示例

public static void main(String[] args) {

ArrayList list=new ArrayList();

Student s1=new Student();

s1.setName("leilei");

s1.setAge(23);

Student s2=new Student();

s2.setName("leilei02");

s2.setAge(23);

list.add(s1);

list.add(s2);

StringWriter str=new StringWriter();

ObjectMapper objectMapper=new ObjectMapper();

try {

objectMapper.writeValue(str, list);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(str);

}

public class JsonToJavaBean {

public static void main(String[] args) {

String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";

Student stu = null;

List list = null;

try {

ObjectMapper objectMapper=new ObjectMapper();

StudentList studentList=objectMapper.readValue(str, StudentList.class);

list=studentList.getStudent();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

for(Student s:list){

System.out.println(s.getName()+" "+s.getAge());

}

}

}

JSon_零基础_006_将JSon格式的字符串转换为Java对象

需求: 将JSon格式的字符串转换为Java对象. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key ...

JS中JSON和string字符串相互转换

在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. JSON.stringify(obj)将JSO ...

java 8中列表对象多条件排序

java 8 新加了 lambda 表达式,当接口是一个 @FunctionalInterface 时可以使用 lambda 表达式代替 Function典型的应用场景为:A. 1个只有1个方法的接口 ...

解决fasterxml中string字符串转对象json格式错误问题

软件152 尹以操 springboot中jackson使用的包是fasterxml的.可以通过如下代码,将一个形如json格式string转为一个java对象: com.fasterxml.jack ...

java String字符串——进度1

String字符串    在JAVA中提供了多种创建字符串对象的方法,这里介绍最简单的两种,    第一种是直接赋值,    第二种是使用String类的构造方法:    如下所示:    Strin ...

String字符串的方法

String字符串在Java开发中是我们常用的一种数据类型,同时String字符串也为我们提供了大量的方法.通过一些实例的练习,我们可以对String字符串的方法有一个比较清楚的了解. 有一个字符串S ...

JavaSE 学习笔记之String字符串(十四)

API:(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源 ...

java 判断String字符串是不是json数据

java 判断String字符串是不是json数据 CreationTime--2018年8月24日18点23分 Author:Marydon JSONObject jo = null; try ...

JAVA代码解析String字符串(json格式的)

java解析String字符串(json格式) 需要jar包:json-lib-2.4-jdk15.jar 一. String str = "{\"name\":\&qu ...

随机推荐

3.线性表-cursor

fatal.h #include #include #define Error( Str ) FatalError( Str ) #d ...

mysql基本语句

mysql -u root -p; 登录数据库 show databases; 展示数据库 show tables; 展示表 desc messages; 查看messages表的结构 drop da ...

[字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案

今天在eclipse中编写pom.xml文件时,注释中的中文被eclipse识别到错误:Invalid byte 1 of 1-byte UTF-8 sequence,曾多次遇到该问题,问题的根源是: ...

composer 的使用

composer是php包管理工具,非常好用!许多框架,例如zendframework都可以用它来安装. 使用起来其实是很简单的.以下以windowns操作系统为例: 把php添加到系统环境变量.(网 ...

oracle 常用博客网址

使用oradebug修改数据库scn – 提供专业ORACLE技术咨询和支持@Phone13429648788 - 惜分飞 Solaris上使用DTrace进行动态跟踪 老熊的三分地-Oracle及数 ...

differ比较两个字符串的差异

"abcde","abdefk"  ---->-c,+f,+k "aba","aababb"    -----&g ...

Python函数篇(2)-递归函数、匿名函数及高阶函数

1.全局变量和局部变量 一般定义在程序的最开始的变量称为函数变量,在子程序中定义的变量称为局部变量,可以简单的理解为,无缩进的为全局变量,有缩进的是局部变量,全局变量的作用域是整个程序,而局部变量的作 ...

Linux 开启echo等服务

第一步: 需要安装xinetd服务(其实daytime就包含在xinetd服务中),安装就直接在"新立得软件管理器"里搜索,安装. sudo apt-get install xin ...

Ruby学习之代码块

代码块在其他的语言中都或多或少接触过一些,如perl中sort{$a<=>$b}keys,传入代码块实现按数值排序,在swift中用到闭包,更加深入学习到training closure. ...

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页