JSON与JAVA数据的相互转换
java与json互相转换(解决日期问题)

java与json互相转换(解决⽇期问题)JSON 即 JavaScript Object Natation,它是⼀种轻量级的数据交换格式,⾮常适合于服务器与 JavaScript 的交互。
本⽂主要讲解下java和JSON之间的转换,特别是解决互相转换遇到⽇期问题的情况。
⼀、需要相关的jar包:json-lib-xxx.jarezmorph-xxx.jarcommons-httpclient-xxx.jarcommons-lang-xxx.jarcommons-logging-xxx.jarcommons-collections-xxx.jar上⾯的包可以从下⾯的连接下载:/index.html⼆、java-》JSON1.List-》JSONview plaincopy to clipboardprint?List<String> list = new ArrayList<String>();list.add("apple");list.add("orange");JSONArray jarr = JSONArray.fromObject(list);System.out.println("list->json:" + jarr.toString());打印结果:list->json:["apple","orange"]2.Map-》JSONview plaincopy to clipboardprint?Map<String, Object> map = new HashMap<String, Object>();map.put("name", "Michael");map.put("baby", new String[] { "Lucy", "Lily" });map.put("age", 30);JSONObject jo = JSONObject.fromObject(map);System.out.println("map->json:" + jo.toString());打印结果:map->json:{"age":30,"name":"Michael","baby":["Lucy","Lily"]}3.bean->JSONview plaincopy to clipboardprint?JsonBean bean = new JsonBean();bean.setName("NewBaby");bean.setAge(1);bean.setBorn(new Date());jo = JSONObject.fromObject(bean);System.out.println("bean->json:" + jo.toString());打印结果:bean->json:{"age":1,"born":{"date":10,"day":3,"hours":14,"minutes":14,"month":2,"seconds":1,"time":1268201641228,"timezoneOffset":-480,"year":110},"name":"NewBaby"}这时你会发现它把bean对象⾥的util.Date这个类型的所有属性⼀⼀转换出来。
jsonobject转java对象的原理

jsonobject转java对象的原理在现代的Web开发中,JavaScript Object Notation(JSON)已成为应用程序之间交换数据的通用格式。
当接收到JSON格式数据时,我们经常需要将其转换为Java对象以对其进行处理。
这就需要了解一些关于JSON和Java对象之间转换的知识。
第一步:了解JSON的基本知识JSON是一个轻量级的数据交换格式,比XML更简单直观。
JSON数据结构为键值对,每个键名都是一个字符串类型,键值可以是数字、字符串、布尔值、数组或对象。
JSON数据的格式与JavaScript对象的格式十分相似,在JavaScript中可以轻易地转换为对象。
JSON格式示例:{"姓名": "张三","年龄": 28,"性别": "男","爱好": ["游泳", "打球"]}第二步:了解Java对象Java是一种面向对象的编程语言,它的对象包含数据和方法。
Java对象之间有继承、多态等特性。
在Java中,对象是通过类来实例化出来的。
Java对象的特点是具有强类型,即变量的类型在编程时需要确定。
Java对象示例:public class Student {private String name;private int age;private String sex;private List<String> hobbies;// getter 和 setter 方法省略}第三步:通过JSON库实现JSON转Java对象我们可以使用Java的JSON库来实现JSON转Java对象。
常用的JSON库包括Jackson、Gson、FastJson等。
这里以Jackson库为例来说明。
1. 导入Jackson库的依赖<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.4</version></dependency>2. 创建ObjectMapper对象来读取JSON数据,并使用readValue()方法将JSON转化为Java对象。
json 转 javabean 数字变科学计数法

json 转 javabean 数字变科学计数法1. 问题背景在开发过程中,我们经常会遇到将json数据转换为javabean对象的情况。
然而,有时候json中的数字在转换成javabean对象后会变成科学计数法的形式,给我们的开发和使用带来了一些困扰。
2. 问题分析出现数字科学计数法的原因主要是由于数据的精度问题。
在JSON中,数字会以科学计数法的形式进行表示,而在转换成Java对象时,由于精度的问题,就会出现科学计数法的情况。
3. 解决方案为了解决这个问题,我们可以通过以下几种方法来处理:3.1 转换时手动处理在将json数据转换成javabean对象的过程中,可以手动处理数字,将其转换成字符串形式,然后再进行转换。
这样可以避免精度问题导致的科学计数法情况。
3.2 使用Gson库Gson是Google提供的用于处理json数据的Java库,它可以方便地将json数据转换成javabean对象。
在使用Gson库时,我们可以通过设置适当的精度,避免数据转换时出现科学计数法的情况。
3.3 自定义转换器如果以上两种方法无法满足需求,我们还可以编写自定义的转换器来处理数字转换的情况。
通过自定义转换器,我们可以更灵活地控制数据的转换过程,避免出现科学计数法的情况。
4. 实践经验在实际项目中,我们可以根据具体的情况来选择合适的解决方案。
对于简单的数据转换场景,可以采用手动处理或使用Gson库的方式来解决问题;对于复杂的数据转换需求,可以考虑编写自定义转换器来处理数字转换的情况。
5. 总结在处理json转javabean时,数字变成科学计数法是一个常见的问题。
我们可以通过手动处理、使用Gson库或编写自定义转换器等方式来解决这个问题,从而保证数据转换的准确性和精度。
在实际开发中,我们需要根据具体的情况选择合适的解决方案,以提高开发效率和代码质量。
6. 实际案例分析为了更好地理解和解决json转javabean数字变科学计数法的问题,我们可以通过一个实际的案例来展示解决方案的具体应用。
JSON的String字符串与Java的List列表对象的相互转换

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<T> list = new ArrayList<T>();JSONArray jsonArray = JSONArray.fromObject(str);//把String转换为jsonlist = JSONArray.toList(jsonArray,t);//这⾥的t是Class<T>在这⾥,因为得到json字符串的时候⽤的是 JSONArray.fromObject(collenction),所有,在讲json字符串转换成json对象的时候,也只能⽤JSONArray.toCollection,并且,⼀定要带上后⾯的class参数。
2.把List转换为jsonJSONArray json = JSONArray.fromObject(object);String str = json.toString();//把json转换为String再如:Teacher类中,有三个属性。
private String teaId;private String teaName;private List<Student> stus;Teacher teacher_1 = new Teacher("编号1", "教师1", stus);JSONObject obj = JSONObject.fromObject(teacher_1);这⼀步,将Teacher 对象转换成json字符串的时候,没有任何的问题。
java中string与json互相转化

java中string与json互相转化在Java中socket数据传输时,数据类型往往⽐較难选择。
可能要考虑带宽、跨语⾔、版本号的兼容等问题。
⽐較常见的做法有两种:⼀是把对象包装成JSON字符串传输,⼆是採⽤java对象的序列化和反序列化。
随着Google⼯具protoBuf的开源。
protobuf也是个不错的选择。
对JSON,Object Serialize,ProtoBuf 做个对照。
1、string转json有三种⽅法第⼀种:string直接转jsonString json = "{\"2\":\"efg\",\"1\":\"abc\"}"; JSONObject json_test = JSONObject.fromObject(json); 将string的双引號转义就可以。
适⽤于字符串较短的另外⼀种:将string转为list后转为jsonList<String> list = new ArrayList<String>(); list.add("username"); list.add("age"); list.add("sex"); JSONArray array = new JSONArray(); array.add(list);能够使⽤list的add函数将须要的字符串拼接就可以,可是这个仅仅能使⽤jsonarry第三种:将string转为map后转为jsonMap<String, String> map = new HashMap<String, String>();map.put("1", "abc");map.put("2", "efg");JSONArray array_test = new JSONArray();array_test.add(map);JSONObject jsonObject = JSONObject.fromObject(map);这⾥使⽤map就能够将字符串转化为JSONArray或者JSONObject都能够。
FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换

FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换fastJson对于json格式字符串的解析主要⽤到了⼀下三个类:JSON:fastJson的解析器,⽤于JSON格式字符串与JSON对象及javaBean之间的转换。
JSONObject:fastJson提供的json对象。
JSONArray:fastJson提供json数组对象。
我们可以把JSONObject当成⼀个Map<String,Object>来看,只是JSONObject提供了更为丰富便捷的⽅法,⽅便我们对于对象属性的操作。
我们看⼀下源码。
同样我们可以把JSONArray当做⼀个List<Object>,可以把JSONArray看成JSONObject对象的⼀个集合。
此外,由于JSONObject和JSONArray继承了JSON,所以说也可以直接使⽤两者对JSON格式字符串与JSON对象及javaBean之间做转换,不过为了避免混淆我们还是使⽤JSON。
⾸先定义三个json格式的字符串,作为我们的数据源。
//json字符串-简单对象型private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";//json字符串-数组类型private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";//复杂格式json字符串private static final String COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studen⽰例1:JSON格式字符串与JSON对象之间的转换。
JSON字符串与Java对象及数组的相互转换

JSON字符串与Java对象及数组的相互转换1. 把java 对象列表转换为json对象数组,并转为字符串复制代码代码如下:JSONArray array = JSONArray.fromObject(userlist);String jsonstr = array.toString();2.把java对象转换成json对象,并转化为字符串复制代码代码如下:JSONObject object = JSONObject.fromObject(invite);String str=object.toString());3.把JSON字符串转换为JAVA 对象数组复制代码代码如下:String personstr = getRequest().getParameter("persons");JSONArray json = JSONArray.fromObject(personstr);List<InvoidPerson> persons = (List<InvoidPerson>)JSONArray.toCollection(json, nvoidPerson.class);4.把JSON字符串转换为JAVA 对象复制代码代码如下:JSONObject jsonobject = JSONObject.fromObject(str);PassportLendsEntity passportlends = null;try {//获取⼀个json数组JSONArray array = jsonobject.getJSONArray("passports");//将json数组转换成 List<PassPortForLendsEntity>泛型List<PassPortForLendsEntity> list = new ArrayList<PassPortForLendsEntity>();for (int i = 0; i < array.size(); i++) {JSONObject object = (JSONObject)array.get(i);PassPortForLendsEntity passport = (PassPortForLendsEntity)JSONObject.toBean(object,PassPortForLendsEntity.class);if(passport != null){list.add(passport);}}//转换PassportLendsEntity 实体类passportlends = (PassportLendsEntity)JSONObject.toBean(jsonobject, PassportLendsEntity.class);str = "{\"lendperson\":\"李四\",\"lendcompany\":\"有限公司\",\"checkperson\":\"李四\",\"lenddate\":\"2010-07-19T00:00:00\",\"lendcounts\":4,\"passports\":[{\"passportid\":\"d\",\"name\":\"李豫川\",\"passporttype\":\"K\"},{\"passportid\":\"K9051\",\"name\":\"李平\",\"passporttype\":\"K\"},{\"passportid\":\"K90517\",\"name\":\"袁寒梅\",\"passporttype\":\"K\"},{\"passportid\":\"K905199\",\"name\":\"贺明\",\"passporttype\":\"K\"}]}";。
java对象与Json字符串之间的转化(fastjson)

java对象与Json字符串之间的转化(fastjson)1. ⾸先引⼊jar包在pom.xml⽂件⾥加⼊下⾯依赖:<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.51</version></dependency>2. 创建⼀个Person类(⽅⾯下⾯使⽤)public class Person implements Comparable<Person> {private int age;private String name;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public Person(int age, String name) {super();this.age = age; = name;}}3. 实现java对象与Json字符串之间的转化public class Test {public static void main(String[] args) {// 实现java对象与Json字符串之间的转化// 1. Person对象与json之间的转换//1.1 将Person对象转成jsonPerson p = new Person(10, "张三");Object obj = JSONArray.toJSON(p);String json = obj.toString();System.out.println("将Person对象转成json:" + json);//1.2 将json字符串转成Person对象Person person = JSONArray.parseObject(json, Person.class);System.out.println("person.getName():" + person.getName());// 2. 将List<Person>与json之间的转换//2.1 将List<Person>转成jsonList<Person> personList = new ArrayList<>();personList.add(new Person(10, "张三"));personList.add(new Person(10, "李四"));personList.add(new Person(10, "王五"));Object obj2 = JSONArray.toJSON(personList);String json2 = obj2.toString();System.out.println("将List<Person>转成json:" + json2);// 2.2. 将json字符串转成List<Person>对象List<Person> list = JSONArray.parseArray(json2, Person.class);System.out.println("list.size():" + list.size());// 3. 将Map对象与json之间的转换// 3.1 将Map转成jsonMap<String, Person> map = new HashMap<>();map.put("1", new Person(10, "张三"));map.put("2", new Person(10, "李四"));map.put("3", new Person(10, "王五"));Object obj3 = JSONArray.toJSON(map);String json3 = obj3.toString();System.out.println("将Map<String,Person>转成json:" + json3);// 3.2. 将json转成Map对象Map<String, Object> map2 = JSONArray.parseObject(json3);Person person2 = JSONArray.parseObject(map2.get("1").toString(), Person.class);System.out.println("person2.getName():" + person2.getName());}}运⾏以上代码,打印结果为:将Person对象转成json:{"name":"张三","age":10}person.getName():张三将List<Person>转成json:[{"name":"张三","age":10},{"name":"李四","age":10},{"name":"王五","age":10}]list.size():3将Map<String,Person>转成json:{"1":{"name":"张三","age":10},"2":{"name":"李四","age":10},"3":{"name":"王五","age":10}} person2.getName():张三。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、将任意的javaBean对象转换为json字符串:
Object obj=XXX;//任意一个javabean的对象都可以,但是这个javaBean必须是公开的,否则会报找不到get方法。
JSONObject jo=JSONObject.fromObject(obj);
System.out.println(jo.toString());
如果你的obj知道具体类型的话,还[可以使用JSONArray等对象来转换。
其方法也类似。
二、将json字符串转换为javaBean对象:
String str="json字符串对象";
JSONObject jo=JSONObject.fromObject(obj);
T t=(T)JSONObject.toBean(jo,T.class);
XXXX
实例:
简单的测试代码:
import java.util.List;
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) throws Exception {
JSONObject jo = JSONObject.fromObject(new T());
String str = (jo.toString());
System.out.println(str);
JSONObject jo2 = JSONObject.fromObject(str);
T t = (T) JSONObject.toBean(jo2, T.class);
List<T2> lists2 = (t.getTest2());
for (Object t2 : lists2) {//这里的Object如果直接写成T2的话,会出错的,原因是JSON 转换后的lists2对象因为它不知道类型,就解析成JSON里的某种格式了,我们需要再调用相同的方法将其转成我们所知的JavaBean
System.out.println(((T3) JSONObject.toBean(JSONObject.fromObject(t2), T3.class)).getAaa());
}
List<String> l3 = t.getListString();
for (String s : l3) {
System.out.println(s);
}
}
}
运行结果:
{"test2":[{"aaa":"testAAA","bbb":"testBBB"},{"aaa":"testAAA","bbb":"testBBB"},{"aaa":"testAAA", "bbb":"testBBB"},
{"aaa":"testAAA","bbb":"testBBB"},{"aaa":"testAAA","bbb":"testBBB"}],"age":15,"listString":["中华人民共和国",
"中华人民共和国","中华人民共和国"],"str":"testStr"}
testAAA
2010-5-1 0:41:50 net.sf.json.JSONObject toBean
警告: Tried to assign property bbb:ng.String to bean of class T3
2010-5-1 0:41:50 net.sf.json.JSONObject toBean
警告: Tried to assign property bbb:ng.String to bean of class T3
testAAA
2010-5-1 0:41:50 net.sf.json.JSONObject toBean
警告: Tried to assign property bbb:ng.String to bean of class T3
testAAA
2010-5-1 0:41:50 net.sf.json.JSONObject toBean
警告: Tried to assign property bbb:ng.String to bean of class T3
testAAA
2010-5-1 0:41:50 net.sf.json.JSONObject toBean
警告: Tried to assign property bbb:ng.String to bean of class T3
testAAA
中华人民共和国
中华人民共和国
中华人民共和国。