精华内容
下载资源
问答
  • Jsonjava对象

    千次阅读 2019-01-09 15:56:06
    最近在最一个项目,项目中涉及 json字符串 转换成 java对象,其中遇到一个问题,在这里记录一下。 首先,我是按照下面博文的方式进行转的,地址如下: JSON字符串和java对象的互转【json-lib】 这个是上面博文中...

    最近在最一个项目,项目中涉及到 json字符串 转换成 java对象,其中遇到一个问题,在这里记录一下。
    首先,我是按照下面博文的方式进行转的,地址如下:

    JSON字符串和java对象的互转【json-lib】

    这个是上面博文中需要的jar包:要想实现JSON和java对象之间的互转,需要借助第三方jar包,这里使用json-lib这个jar包,下载地址为:https://sourceforge.net/projects/json-lib/,json-lib需要commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、commons-lang-2.5.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar五个包的支持,可以自行从网上下载,这里不再贴出下载地址。

    根据博文中

            JSONObject jsonObject=JSONObject.fromObject(objectStr);
            Student stu=(Student)JSONObject.toBean(jsonObject, Student.class);
    

    进行转换应该是没有问题,而我遇到的问题是:
    1、不能转换
    2、简化json串后,数值不正确。

    贴一下我的代码:
    实体类1:

    public class TerminalStatusInstance {
    	private int DevID;	
    	private int BID;	
    	private int CID;	
    	private int LinkStatus;	
    	private int DevStatus;	
    	private int UnitCount;	
    	private Unitn Unit1;	//对象类型属性[实体类二]
    	private Unitn Unit2;
    	
    	//省略set/get方法
    	//源代码是没有构造方法的。
    	
    }
    

    实体类2:

    public class Unitn {
    	private Integer Count;
    	private Integer UnitId;
    	private Object[] Sta;
    	//省略set/get方法
    	//源代码是没有构造方法的。
    }
    

    测试json串转java对象:

    public static void main(String[] args) {
    		String str = "{\"BID\":61700,\"CID\":0,\"DevID\":102,\"DevStatus\":0,\"LinkStatus\":0,\"Unit1\":{\"Count\":118,\"Sta\":[\"1\",\"1\",\"1\",\"1\",\"1\",\"0\",0,\"1\",\"1\",1,\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\"],\"UnitId\":9},\"UnitCount\":14}";
    //		String str = "{\"BID\":61700,\"CID\":3,\"DevID\":22,\"DevStatus\":3,\"LinkStatus\":3,\"UnitCount\":14}";
    		JSONObject jsonObject=JSONObject.fromObject(str);
    		TerminalStatusInstance log=(TerminalStatusInstance)JSONObject.toBean(jsonObject, TerminalStatusInstance.class);
    		System.out.println(log);
    }
    

    运行之后报错:

    2019-01-09 15:12:37,519 WARN [net.sf.json.JSONObject] - Tried to assign property DevID:java.lang.Integer to bean of class com.cetcnav.suo.ADSB.worker.TerminalStatusInstance
    2019-01-09 15:12:37,521 WARN [net.sf.json.JSONObject] - Tried to assign property DevStatus:java.lang.Integer to bean of class com.cetcnav.suo.ADSB.worker.TerminalStatusInstance
    2019-01-09 15:12:37,522 WARN [net.sf.json.JSONObject] - Tried to assign property LinkStatus:java.lang.Integer to bean of class com.cetcnav.suo.ADSB.worker.TerminalStatusInstance
    Exception in thread "main" net.sf.json.JSONException: java.lang.NoSuchMethodException: Unknown property 'Unit1' on class 'class com.cetcnav.suo.ADSB.worker.TerminalStatusInstance'
    	at net.sf.json.util.PropertySetStrategy$DefaultPropertySetStrategy._setProperty(PropertySetStrategy.java:69)
    	at net.sf.json.util.PropertySetStrategy$DefaultPropertySetStrategy.setProperty(PropertySetStrategy.java:60)
    	at net.sf.json.JSONObject.setProperty(JSONObject.java:1394)
    	at net.sf.json.JSONObject.toBean(JSONObject.java:443)
    	at net.sf.json.JSONObject.toBean(JSONObject.java:233)
    	at com.cetcnav.suo.ADSB.worker.TerminalContrastDifferenceWorker.main(TerminalContrastDifferenceWorker.java:127)
    Caused by: java.lang.NoSuchMethodException: Unknown property 'Unit1' on class 'class com.cetcnav.suo.ADSB.worker.TerminalStatusInstance'
    	at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:2123)
    	at org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.java:890)
    	at net.sf.json.util.PropertySetStrategy$DefaultPropertySetStrategy._setProperty(PropertySetStrategy.java:67)
    	... 5 more
    
    

    当时大体猜到应该是因为属性类型为对象类型的缘故,所以就省略了Unit1的值,在测试:

    2019-01-09 15:35:28,456 WARN [net.sf.json.JSONObject] - Tried to assign property DevID:java.lang.Integer to bean of class com.cetcnav.suo.ADSB.worker.TerminalStatusInstance
    2019-01-09 15:35:28,458 WARN [net.sf.json.JSONObject] - Tried to assign property DevStatus:java.lang.Integer to bean of class com.cetcnav.suo.ADSB.worker.TerminalStatusInstance
    2019-01-09 15:35:28,459 WARN [net.sf.json.JSONObject] - Tried to assign property LinkStatus:java.lang.Integer to bean of class com.cetcnav.suo.ADSB.worker.TerminalStatusInstance
    2019-01-09 15:35:28,459 WARN [net.sf.json.JSONObject] - Tried to assign property UnitCount:java.lang.Integer to bean of class com.cetcnav.suo.ADSB.worker.TerminalStatusInstance
    TerminalStatusInstance [DevID=0, BID=61700, CID=3, LinkStatus=0, DevStatus=0, UnitCount=0, Unit1=null, Unit2=null]
    
    

    数据不是想要的,DevID=0,
    然后网上冲浪~~~
    1、无构造函数,
    2、Java中Json转换Bean对象并忽略大小写
    3、使用json-lib JsonConfig 设置策略。
    ……
    等等一些方法,无奈腹中墨水严重匮乏,没有解决。

    然后就用了另外一个方法:ObjectMapper
    使用 ObjectMapper类 必须引用3个jar包(jackson-databind,jackson-core,jackson-annotations)

     缺少 jackson-core ,会报错 The type com.fasterxml.jackson.core.JsonParser cannot be resolved. It is indirectly referenced from required .class files
    
     缺少 jackson-annotations ,会报错  Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonAutoDetect
    

    但是要是用一个注解:@JsonProperty(value="")

    ObjectMapper mapper = new ObjectMapper();
    		try {
    			TerminalStatusInstance t=(TerminalStatusInstance)mapper.readValue(str,TerminalStatusInstance.class);
    			System.out.println(t);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    

    之后测试解决,后期再来搞上面的问题吧。

    展开全文
  • JSON转换JAVA对象

    万次阅读 2019-04-25 16:24:34
    一、java转为json字符串 Student s = new Student(); s.setName("huang"); s.setAge(16); System.out.println(s); JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(s)); System.out....

    一、java转为json字符串

    Student s = new Student();
    s.setName("huang");
    s.setAge(16);
    System.out.println(s);
    
    JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(s));
    System.out.println(jsonObject);

    所有对象转成json字符串都可以使用

    结果:

    Student{name='huang', age=16}
    {"name":"huang","age":16}

    二、JSON字符串(单对象)转java对象

    请求:

    //可以是一个对象,也可以是多个对象,json数据结构其实就是kv结构
    {
    	"student":{
    		"name":"老王",
    	        "age":12
            }
    	
    }

    获取处理:

        @PostMapping("/getObject")
        public void getObject(@RequestBody JSONObject object){
            //已知类型的情况下可以使用
            //不知道的情况可以转成Map结构数据
            Student student = object.getObject("student", Student.class);
    
            System.out.println(student);
           
        }

     

    三、json字符串转list

    请求:

    {
    	"list":[
    		{
    			"name":"老王",
    			"age":25
    		}
    	],
    	"student":{
    			"name":"老李",
    			"age":46
    		}
    }

    处理:

    @PostMapping("/getLis")
    public void getLis(@RequestBody JSONObject object){
       Student student = object.getObject("student", Student.class);
       //数组并不能跟实体那样能直接获取出来强转,需要先获取JSONArray,因为数组里面的元素是Map
       JSONArray students = jsonObject.getJSONArray("list");
       List<Student> students = JSONObject.parseArray(students.toString(),    Student.class);
           
            
        }

     

     

    最后将依赖补上:

    <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.37</version>
        </dependency>

    有其他更好的方法欢迎留言交流

    展开全文
  • jsonjava对象 互相转换(java)

    万次阅读 多人点赞 2018-08-29 19:25:33
    java 解析json  1. 使用 alibaba 的 fastJson 添加依赖或者jar ... Java对象 java对象 &gt; json w3c的 API 连接:https://www.w3cschool.cn/fastjson/fastjson-api.html public class MyJson { p...

    java 解析json  

    1. 使用 alibaba 的 fastJson

    添加依赖或者jar

    fastJson 简单使用

    JSON  > Java对象

    java对象 > json

    w3c的 API 连接:https://www.w3cschool.cn/fastjson/fastjson-api.html

    public class MyJson {
        public static String jsonmap = "{\"001\":{\"name\":\"xiaohong\",\"password\":\"654321\"},\"002\":[{\"$ref\":\"$.001\"},{\"name\":\"xixi\",\"password\":\"789\"}]}";
        public static String jsonuser = "{\"name\":\"xiaohong\",\"password\":\"654321\"}";
        public static String jsonlist = "[{\"name\":\"xiaohong\",\"password\":\"654321\"},{\"name\":\"xixi\",\"password\":\"789\"}]";
    
        public static void main(String[] args) {
            User user = new User();
            user.setName("xiaohong");
            user.setPassword("654321");
            List<User> list = new ArrayList<User>();
            list.add(user);
            list.add(new User("xixi","789"));
            Map map = new HashMap();
            map.put("001",user);
            map.put("002",list);
            // 1. json字符串 转换为 java 对象
    
    
            // toJsonString  - java对象转换为json字符串
            System.out.println(JSONObject.toJSONString(user));
            System.out.println(JSONObject.toJSONString(list));
            System.out.println(JSONObject.toJSONString(map));
    
            // toJavaObject - json字符串转换为java对象
            System.out.println(JSONObject.parseObject(jsonuser,User.class));
            List list1 = JSONObject.parseObject(jsonlist, List.class);
            for(int i=0;i<list1.size();i++) {
                System.out.println(JSONObject.parseObject(JSONObject.toJSONString(list1.get(i)),User.class));
            }
            Map map1 = JSONObject.parseObject(jsonmap, Map.class);
            Iterator iterator = map1.entrySet().iterator();
            while (iterator.hasNext()) {
                Map.Entry entry= (Map.Entry) iterator.next();
                System.out.println("key :"+entry.getKey()+"   value: " + entry.getValue());
            }
    
            // Json  -- 实体类转换为json字符串
            System.out.println(JSON.toJSONString(user));
            System.out.println(JSON.toJSONString(list));
            System.out.println(JSON.toJSONString(map));
    
            // json  -- json 转 java对象
            System.out.println(JSON.parseObject(jsonuser,User.class));
            List list2 = JSON.parseObject(jsonlist, List.class);
            for(int i=0;i<list2.size();i++) {
                System.out.println(JSON.parseObject(JSON.toJSONString(list1.get(i)),User.class));
            }
            Map map2 = JSON.parseObject(jsonmap, Map.class);
            Iterator iterator2 = map1.entrySet().iterator();
            while (iterator2.hasNext()) {
                Map.Entry entry= (Map.Entry) iterator2.next();
                System.out.println("key :"+entry.getKey()+"   value: " + entry.getValue());
            }
            
        }
    }
    

     

    jackson :

     

    使用:

    入门连接:https://blog.csdn.net/mashangyou/article/details/24271001

    测试json 

    public class Myjackson {
        public static String jsonmap = "{\"001\":{\"name\":\"xiaohong\",\"password\":\"654321\"},\"002\":[{\"$ref\":\"$.001\"},{\"name\":\"xixi\",\"password\":\"789\"}]}";
        public static String jsonuser = "{\"name\":\"xiaohong\",\"password\":\"654321\"}";
        public static String jsonlist = "[{\"name\":\"xiaohong\",\"password\":\"654321\"},{\"name\":\"xixi\",\"password\":\"789\"}]";
    
        public static void main(String[] args) throws IOException {
            // 创建 objectMapper
            ObjectMapper mapper = new ObjectMapper();
            // 读取树模型  mapper.readTree 相当于 把 json 读取为一个json树
            JsonNode jsonNode = mapper.readTree(jsonmap);
            // 获取 001
            JsonNode path001 = jsonNode.path("001");
            System.out.println(path001);
            System.out.println(path001.path("name"));
            System.out.println(path001.findPath("password"));
    
            // json  > java对象
            User user = mapper.readValue(jsonuser, User.class);
            System.out.println("user  ==" + user);
            System.out.println(mapper.readValue(jsonlist, List.class));
            System.out.println(mapper.readValue(jsonmap,Map.class));
    
            // java对象 》 json
            String s = mapper.writeValueAsString(user);
            System.out.println(s);
        }
    }

    还可以将 json 输入到 文件中

    Gson:

    package com.xiaodu.json;
    import com.google.gson.Gson;
    import com.google.gson.JsonArray;
    import com.google.gson.JsonObject;
    import com.xiaodu.model.User;
    
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author du_tian_jie
     * @version v1.0
     * @date 
     * @desc:
     */
    public class MyGson {
    
        public static String jsonmap = "{\"001\":{\"name\":\"xiaohong\",\"password\":\"654321\"},\"002\":[{\"$ref\":\"$.001\"},{\"name\":\"xixi\",\"password\":\"789\"}]}";
        public static String jsonuser = "{\"name\":\"xiaohong\",\"password\":\"654321\"}";
        public static String jsonlist = "[{\"name\":\"xiaohong\",\"password\":\"654321\"},{\"name\":\"xixi\",\"password\":\"789\"}]";
    
        public static void main(String[] args) {
    
            // json >java
            Gson gson = new Gson();
            User user = gson.fromJson(jsonuser, User.class);
            System.out.println(user);
            System.out.println(gson.fromJson(jsonlist, List.class));
            System.out.println(gson.fromJson(jsonmap,Map.class));
    
            // java > json
            String json = gson.toJson(new User("小红", "1212"));
            System.out.println(json);
    
            // jsonObject 对象使用(使用jsonObject 对象)
            JsonObject jsonObject = new JsonObject();
            jsonObject.addProperty("name","小王");
            jsonObject.addProperty("password","7890000");
            JsonArray jsonArray = new JsonArray();
            jsonArray.add(jsonObject);
            jsonArray.add(jsonObject); // 添加两个 一模一样的 -- 懒
            System.out.println(jsonArray.toString());
    
    
        }
    }
    

    *****************************************************************************

    展开全文
  • java字符串转Json,Jsonjava对象

    千次阅读 2018-09-03 11:19:18
    //下面是把拿json字符串转成 json对象 JSONObject jsStr = JSONObject.parseObject(string); //将字符串{“id”:1} //int jsID = Integer.parseInt(jsStr....* json对象转换成java对象 */ InvestorApplyMo...
    //下面是把拿到的json字符串转成 json对象
    JSONObject jsStr = JSONObject.parseObject(string); //将字符串{“id”:1}
    //int jsID = Integer.parseInt(jsStr.getString("id"));//获取id的值
    
    
    /** 
    * json对象转换成java对象 
    */ 
    InvestorApplyModel stud = (InvestorApplyModel) JSONObject.toJavaObject(jsStr,InvestorApplyModel.class);

     

    展开全文
  • JSONjava对象之间的相互转换

    千次阅读 2016-03-22 16:02:38
    JSONjava对象之间的相互转换
  • 利用Gson完成jsonjava对象的转换

    千次阅读 2017-09-12 19:30:46
    关于如何利用Gson完成jsonjava对象的转换
  • 请问一下这样的json字符串如何转化为java对象呢? json字符串: "{"post":{"userId":"1","postId":"2"}}" 如果post后面是一个json字符串,那一点问题都没有,但是post后面是一个json对象,这要怎么解析呢?我的...
  • java实现http请求,java解析jsonjava对象转换,项目源代码实例.直接下载源代码可以运行。
  • 一:jsonjava对象的对应关系(分析json)。 1.json示例;   2.json的构成。 Json总体来说是一串有结构的字符串String,从形式来看,它是多个{}组和[]组嵌套成一个大{}的结构,从数据上来说它是由多个对象和对象...
  • android开发中jsonjava对象相互转换

    千次阅读 2017-03-22 17:02:05
    在Android开发过程中,客户端总是需要从服务器获取数据,包括XML和json格式,目前json格式的数据使用较为普遍,所以了解jsonjava对象两者之间的相互转换是很有必要的,一句话就能达到目的。 jsonjava对象: Object...
  • JSONObject.toJavaObject(JSON对象实例, Java对象.class); public class JSON2JavaTest{ public static void main(String[] args) { Student stu = new Student("公众号编程大道", "m", 2); //先转成JSON对象 ...
  • 前端传入json转为java对象

    千次阅读 2018-04-17 09:14:17
    在实际开发中 遇到较复杂的json对象 如下:function sendJson() { var stu={ "id": "sdfs", "orgId": "sdfsdf", "schemeId": "sdfs", "...
  • JSONJAVA对象之间的转换

    万次阅读 2010-08-10 11:55:00
    JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSONJAVA对象之间的相互转换。 一、对普通类型的JSON模式的转换 一般JSON为最...
  • JSON对象和java对象的相互转换

    千次阅读 2019-11-19 21:45:31
    1. JSON对象转为JAVA对象 2. JAVA对象转为JSON对象 使用jackson将JAVA对象转换成JSON对象 导入jackson相关jar包 创建jackson核心对象ObjectMapper 调用ObjectMapper对象的相关方法进行转换 ...
  • 在java开发中时常会遇到jsonjava对象转换的情况,比如说一般接口调用返回的都是json格式的,我们要取出来用就得把它解析成我们想要的格式,有时候我们传递参数又需要把参数封装成json。这两天调试API经常需要转换...
  • JsonJava对象互转之Gson学习

    千次阅读 2014-09-29 19:21:43
    我曾在《XML,Object,Json转换之浅析Xstream的使用》一文中介绍过使用XStream进行XML,Object,Json之间的转换,虽然XStream内置了对Json的支持,但是效果不是特别好,毕竟XStream重点不在Json。下面就介绍另外一种...
  • 基于FastJson实现JSONJava对象转换

    千次阅读 2020-03-24 17:51:13
    1.pom.xml <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> ...2.对象与字符串之...
  • 理论我就不多废话了,直接看代码吧。使用的是fastjson-...然后就是反过来,把复杂的json字符串转换成对应的嵌套的Java对象。 先上工具类。如下。 package com.lxk.json; import com.alibaba.fastjson.JSON; ...
  • 这是本人写的一个基于JSON的完整项目,实现了Java对象、数组、集合转换为Json(Json转化为Java对象、数组、集合)。这是一个完整的项目,下载解压后直接导入MyEclipse/Eclipse中,运行com.demo.JSONDemo类即可看到效果...
  • Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。 前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html ...
  • JsonJava对象时,遇到Key值首字母大写无法转换问题
  • Java对象: List Map ...Java对象转换为JSON数据的步骤: 1声明Person类的两个对象,person1及person2,并封装成员变量值 2声明list对象,传入person1及perso2 3创建Jackson核心对象 4通过Jack...
  • fastjson 将jsonjava对象相互转换

    万次阅读 2019-02-02 15:43:13
    <!... ...  <artifactId>fastjson  <version>1.2.47 ...import java.util.ArrayList;... List<Person> list1 = JSON.parseArray(listJson1, Person.class);  System.out.println(list1);  } }  
  • java对象(bean)转换成json

    千次阅读 2016-06-27 09:47:29
    使用Gson将Java对象转换为Json Gson是Google的一个开源项目,可以将Java对象转换成JSON,也可能将JSON转换成Java...1) toJson() – 转换java 对象到JSON 2) fromJson() – 转换JSONjava对象 注意使用Gson时记
  • //json字符串-简单对象 String jsonStr = "{\"studentName\":\"张三\",\"studentAge\":18}"; //json字符串-数组类型 String jsonArrStr = "[{\"studentName\":\"张三\",\"studentAge\":18},{\"studentName\":\"李四\...
  • testJson_1中 将不同的java对象转换为json格式文件(String),  testJson_2中传入testJson_1中生成的JSON String 参数,反向返回各种Java的对象 包括:java的String、List、HashMap、JavaBean, 以及对象内包含...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 298,244
精华内容 119,297
关键字:

json到java对象

java 订阅