用了平台之后很少再接触到java和js的底层代码,前几天远程帮一个萌新远程调试代码,这个萌新按照网上的教程去将json字符转java对象却一直报错。真相是它的json字符串格式不对,他的明明是一个数组,却写成一个对象,虽然用json在线校验是没错的,但是代表的含义是不一样的~~~(此处捂脸~偷笑~哈哈)所以在了解怎么转换之前一定要熟悉json的格式,我之所以写博客就是希望自己不要把以前的东西遗忘了,不希望自己的有多正规,只当这是个日记,偶尔自己看看也能和别人多多交流一下。

  那么json和java的转换方法有哪些呢?我所了解的是有三种:

  第一种方法,使用 JSON-lib 。

  第二种方法,使用 JACKSON。

  第三种方法,使用Gson。

  我用过最多的是Gson的转换方式,基本不依赖其他的包。用起来自然很爽,取值方式非常灵活。对复杂的JSON 取值,基本统统搞定。在Gson 中分为两种概念。一个就  是 JsonObject 和 JsonArray。

1.将bean转换成Json字符串:

public static String beanToJSONString(Object bean) {
return new Gson().toJson(bean);
}

2.将Json字符串转换成对象:(当然需要提前建好pojo类)

public static Object JSONToObject(String json,Class beanClass) {
Gson gson = new Gson();
Object res = gson.fromJson(json, beanClass);
return res;
}

注:转换后的对象使用前进行强转:例如bean bean1 = (bean)FormatUtil.JSONToObject(json, bean.class);

3.将Json字符串转换成JsonObject对象:

JsonObject returnData = new JsonParser().parse(jsonstr).getAsJsonObject();

4.将JsonArray类型的Json字符串解析成对象方法:

Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray Jarray = parser.parse(jstring).getAsJsonArray(); ArrayList<channelSearchEnum> lcs = new ArrayList<channelSearchEnum>(); for(JsonElement obj : Jarray ){
channelSearchEnum cse = gson.fromJson( obj , channelSearchEnum.class);
lcs.add(cse);
}

或者

String json = "[{\"username\":\"test\"},{\"username\":\"test2\"}]";
System.out.println(new JsonParser().parse(json).getAsJsonArray().get(0).getAsJsonObject().get("username").getAsString());

5.获取JsonObject中指定key值对应的JsonArray对象:

String json= "{\"pids\":[\"1\",\"2\",\"3\"]}";
System.out.println(new JsonParser().parse(json).getAsJsonObject().getAsJsonArray("pids").get(0).getAsString());

第二种用jackson实现转换,可以参考下面这篇博客:http://blog.csdn.net/a123demi/article/details/43112547

第三种用json-lib,这是刚学时用的方法,可以参考下面这篇博客:http://blog.csdn.net/chenbin520/article/details/8776915,但是我相信最终你也会选择使用Gson,因为看到那么多包,方法还那么繁琐,不过这完全是个人的不成熟小建议,每个人有每个人的习惯,实现功能的方式千千万,有的人喜欢简简单单,有的人喜欢炫技。个人觉得与其炫技不如多加几行注释,好好想想怎么能不写重复代码,写出让人一读便懂得代码~依稀记得当年一个哥们为了炫技强行用反射去获取对象的方法,循环获取的对象属性数组,最终代码检视时被发现,后来没多久这位前辈不知道是不是因为这件事辞职了。哎~又开启了吐槽模式~到了看海贼王的时间了~~~~~一天不更博浑身蓝瘦,我也要吐槽一下自己了~辣鸡哟

json转java对象的更多相关文章

  1. JSON 与JAVA对象之间的转换(转)

    JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换. 一.对普通类型的JSON模式的转换 一 ...

  2. Json与Java对象互转之Gson学习

    Json与Java对象互转之Gson学习 请尊重他人的劳动成果.转载请注明出处:Json与Java对象互转之Gson学习         我曾在<XML,Object,Json转换之浅析Xstr ...

  3. Spring: 读取 .properties 文件地址,json转java对象,el使用java类方法相关 (十三)

    1. 在Java中获取 .properties 文件的路径 (src/main/resources 下) ProjectName |---src/main/java |---src/main/reso ...

  4. jackson 进行json与java对象转换 之三

    2.测试类,没用Junit,用Main()方法输出. package test; import java.io.IOException; import java.util.ArrayList; imp ...

  5. android开发中json与java对象相互转换

    json与java对象的相互转换.(使用com.google.gson) 在Android开发过程中,客户端总是需要从服务器获取数据,包括XML和json格式,目前json格式的数据使用较为普遍,所以 ...

  6. JSON与Java对象的互相转换

    JSON与Java对象的互相转换 例一(单个对象进行赋值): @RequestMapping("test1.do") @ResponseBody public JSONObject ...

  7. Json:Java对象和Json文本转换工具类

    Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类. 安装 下载源码 git clone https://github.com/njdi/durian.git 编译源码 cd ...

  8. JSON和java对象的互转

    先说下我自己的理解,一般而言,JSON字符串要转为java对象需要自己写一个跟JSON一模一样的实体类bean,然后用bean.class作为参数传给对应的方法,实现转化成功. 上述这种方法太麻烦了. ...

  9. JAVA里面json和java对象之间的相互转换

    1. 把java 对象列表转换为json对象数组,并转为字符串 JSONArray array = JSONArray.fromObject(list);    String jsonstr = ar ...

随机推荐

  1. Buaaclubs项目介绍

    简介 首先,它是社团资讯的集散地,任何希望了解北航社团信息或活动情况的同学都可以在这个平台上获取自己需要的信息,并且可以随时随地地参与社团互动,方便快捷地实现网上报名.在线咨询.活动参与等多种功能. ...

  2. 四则运算2及PSP0设计项目计划

    时间比较紧,我简单写写我的设计思路: 题目在四则运算1的基础上控制产生题目的数量,这个可以用变量控制:打印方式也可选用变量控制,程序的关键是括号的生成.我们可以将整个四则运算式看成()+()的模型,然 ...

  3. 团队作业4——第一次项目冲刺(Alpha版本)2017.11.18

    1.当天站立式会议照片 本次会议在5号公寓312召开,本次会议内容:①:熟悉每个人想做的模块.②:根据老师的要求将项目划分成一系列小任务.③:在上次会议内容完成的基础上增加新的任务. 2.每个人的工作 ...

  4. Python开发【第五篇】迭代器、生成器、递归函数、二分法

    阅读目录 一.迭代器 1. 迭代的概念 #迭代器即迭代的工具(自定义的函数),那什么是迭代呢? #迭代:指一个重复的过程,每次重复都可以称之为一次迭代,并且每一次重复的结果是下一个迭代的初始值(例如: ...

  5. 13种细分类型的TCP重传小结(一张表总结4.4内核所有TCP重传场景)

    具体每种重传类型的wireshark示例解说参考前文 来自为知笔记(Wiz)

  6. Spring 计划 7.0

    Sprint回顾 让我们一次比一次做得更好.   1.回顾组织 主题:“我们怎样才能在下个sprint中做的更好?” 时间:设定为1小时. 参与者:整个团队. 场所:宿舍. 秘书:李新佳.    2. ...

  7. 软工网络15团队作业4——敏捷冲刺日志的集合贴(Alpha阶段)

    Alpha阶段 第 1 篇 Scrum 冲刺博客 第 2 篇 Scrum 冲刺博客 第 3 篇 Scrum 冲刺博客 第 4 篇 Scrum 冲刺博客 第 5 篇 Scrum 冲刺博客 第 6 篇 S ...

  8. Java中的多线程科普

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

  9. ini_set的权限大于error_reporting

    在用php做网站开发的时候 , 为防止用户看到错误信息,而出现的不友好界面.故一般性会在php.ini里设置:display_errors = Off;不过在开发的时候,我们有时候需要打开错误信息.这 ...

  10. [转帖]2018年JVM生态系统报告出炉

    很多未解之谜终于有答案了——2018年JVM生态系统报告出炉 https://blog.csdn.net/hollis_chuang/article/details/84134298   2018年1 ...