JSONObject和JSONArray
1.从Object到String
要先用Object对象构造一个JSONObject或者JSONArray对象,然后调用它的toString()方法即可
(1)示例一
- Book book=new Book();
- book.setName("Java");
- book.setPrice(52.3f);
- JSONObject object=JSONObject.fromObject(book);
- System.out.println(object.toString());
(2)示例二
- Book book=new Book();
- book.setName("Java");
- book.setPrice(52.3f);
- Book book2=new Book();
- book2.setName("C");
- book2.setPrice(42.3f);
- List list=new ArrayList();
- list.add(book);
- list.add(book2);
- JSONArray arry=JSONArray.fromObject(list);
- System.out.println(arry.toString());
- //结果如下:
- [{"name":"Java","price":52.3},{"name":"C","price":42.3}]
2.从String到Object
要先用String对象构造一个JSONObject或者JSONArray对象
(1)示例一
- String json="{name:'Java',price:52.3}";
- JSONObject object=JSONObject.fromObject(json);
- System.out.println(object.get("name")+" "+object.get("price"));
(2)示例二
- String json="[{name:'Java',price:52.3},{name:'C',price:42.3}]";
- JSONArray array=JSONArray.fromObject(json);
- for(int i=0;i<array.size();i++){
- Map o=(Map)array.get(i);
- System.out.println(o.get("name")+" "+o.get("price"));
- }
3.从String到Bean
(1)单个Bean对象
- String json="{name:'Java',price:52.3}";
- JSONObject object=JSONObject.fromObject(json);
- Product product=(Product)JSONObject.toBean(object,Product.class);
- System.out.println(product.getName()+" "+product.getPrice());
(2).Bean的数组
- String json="[{name:'Java',price:52.3},{name:'C',price:42.3}]";
- JSONArray array=JSONArray.fromObject(json);
- Product[] products=(Product[]) JSONArray.toArray(array,Product.class);
- for(Product p:products){
- System.out.println(p.getName()+" "+p.getPrice());
- }
使用List和Map集合结合上面方法拼装自定义json数据
- /**
- * 审批状态列表
- * @return json
- * @throws Exception
- */
- public String applyList() throws Exception {
- List<Map<String,String>> list = new ArrayList<Map<String,String>>();
- Map<String,String> map = new HashMap<String, String>();
- map.put("value", "");
- map.put("text", "全部");
- list.add(map);
- map = new HashMap<String, String>();
- map.put("value", "-1");
- map.put("text", "未通过");
- list.add(map);
- map = new HashMap<String, String>();
- map.put("value", "0");
- map.put("text", "主任审批中");
- list.add(map);
- map = new HashMap<String, String>();
- map.put("value", "1");
- map.put("text", "经理审批中");
- list.add(map);
- map = new HashMap<String, String>();
- map.put("value", "2");
- map.put("text", "已通过");
- list.add(map);
- JSONArray arry=JSONArray.fromObject(list);
- this.jsonObject = arry.toString();
- return JSON;
- }
得到如下JSON数据:
- [
- {
- "text": "全部",
- "value": ""
- },
- {
- "text": "未通过",
- "value": "-1"
- },
- {
- "text": "主任审批中",
- "value": "0"
- },
- {
- "text": "经理审批中",
- "value": "1"
- },
- {
- "text": "已通过",
- "value": "2"
- }
- ]
自定义封装JSON操作的类
- package com.util;
- import java.util.List;
- import java.util.Map;
- import net.sf.json.JSONArray;
- import net.sf.json.JSONObject;
- public class JsonHelper {
- //从普通的Bean转换为字符串
- public static String getJson(Object o){
- JSONObject jo=JSONObject.fromObject(o);
- return jo.toString();
- }
- //从Java的列表转换为字符串
- public static String getJson(List list){
- JSONArray ja=JSONArray.fromObject(list);
- return ja.toString();
- }
- //从Java对象数组转换为字符串
- public static String getJson(Object[] arry){
- JSONArray ja=JSONArray.fromObject(arry);
- return ja.toString();
- }
- //从json格式的字符串转换为Map对象
- public static Map getObject(String s){
- return JSONObject.fromObject(s);
- }
- //从json格式的字符串转换为List数组
- public static List getArray(String s){
- return JSONArray.fromObject(s);
- }
- //从json格式的字符串转换为某个Bean
- public static Object getObject(String s,Class cls){
- JSONObject jo=JSONObject.fromObject(s);
- return JSONObject.toBean(jo, cls);
- }
- //从json格式的字符串转换为某类对象的数组
- public static Object getArray(String s,Class cls){
- JSONArray ja=JSONArray.fromObject(s);
- return JSONArray.toArray(ja, cls);
- }
- }
拼json方法:
- /**
- * 统计页面
- * @return
- * @throws Exception
- */
- public String getMonthFlow() throws Exception{
- List list = new ArrayList();
- list = totalQuantityManager.getMonthFlow();
- ArrayList list1 = new ArrayList();
- ArrayList list2 = new ArrayList();
- ArrayList list3 = new ArrayList();
- ArrayList list4 = new ArrayList();
- for (int i = 0; i < list.size(); i++) {
- Object[] strs = (Object[]) list.get(i);
- list1.add(strs[1]);
- list2.add(strs[2]);
- list3.add(strs[4]);
- list4.add(strs[5]);
- }
- Hashtable dic = new Hashtable();
- dic.put("huaXue",list1);
- dic.put("anDan",list2);
- dic.put("erYangHualiu",list3);
- dic.put("danYangHuawu",list4);
- this.jsonObject=JSONObject.fromObject(dic).toString();
- return JSON;
- }
json数据:
- {
- "huaXue": [
- 400,
- 1132,
- 601,
- 500,
- 120,
- 90,
- 1000
- ],
- "anDan": [
- 1320,
- 7000,
- 601,
- 234,
- 120,
- 50000,
- 20
- ],
- "erYangHualiu": [
- 1320,
- 1132,
- 601,
- 234,
- 120,
- 90,
- 20
- ],
- "danYangHuawu": [
- 1320,
- 1132,
- 601,
- 234,
- 120,
- 90,
- 20
- ]
- }
JSONObject和JSONArray的更多相关文章
- json学习系列(6)JSONObject和JSONArray是JDK的集合部分延伸
我一直觉得JSONObject和JSONArray是JDK集合部分的延伸,它们与JDK的List和Map一脉相承.通过研究JSONObject和JSONArray的结构,我们顺便也复习一下JDK的内容 ...
- JSONObject与JSONArray的使用
1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: commons-lang.jar commons-beanutils.jar commons ...
- Java学习笔记50:JSONObject与JSONArray的使用
Java不像PHP解析和生产JSON总是一个比较痛苦的过程.但是使用JSONObject和JSONArray会让整个过程相对舒服一些. 需要依赖的包:commons-lang.jar commons- ...
- Gson解析JsonObject和JsonArray
Gson中重要的几个核心类: Gson.JsonParser.JsonObject.JsonArray. 下面就是解析的步骤: public void parserJsonArray(String s ...
- [转]JSONObject与JSONArray的使用
http://www.cnblogs.com/xwdreamer/archive/2011/12/16/2296904.html 参考文献: http://blog.csdn.net/huangwuy ...
- json:JSONObject与JSONArray的使用
1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: commons-lang.jar commons-beanutils.jar commons ...
- JSONObject和JSONArray区别及基本用法
一.JSONObject和JSONArray的数据表示形式 JSONObject的数据是用 { } 来表示的, 例如: { "id" : "123", & ...
- fastjson如何判断JSONObject和JSONArray
1.fastjson如何判断JSONObject和JSONArray,百度一下,教程还真不少,但是是阿里的fastjson的我是没有找到合适的方法.这里用一个还算可以的方法,算是实现了这个效果. 网上 ...
- JSONObject、JSONArray、Map、JavaBean的相互转换
1,JSONObject json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value} 2,JSONArray json数组,使用中括号[ ],只不过数组里面的项也是json键 ...
随机推荐
- ZendStudio10 代码格式化 xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <profi ...
- 【Android 错误记录】Conversion to Dalvik format failed with error 1 错误
错误原因:依赖的包中有冲突,比如依赖了同一个jar包的不同版本等 在以往测试的过程中,出现过几次这个问题,根本原因都是因为有冲突了,但是表现形式可能不一样 情况1: 有一个叫DemoAPP的工 ...
- ruby和Python简单对比
前不久学了ruby,发现ruby和Python非常像,于是自个测试对比了下,测完了才知道网上有现成的……下面是测试结果 序列(包括列表和元组等)有分片的特点:可能会比较方便的提取其中特定元素,暂时 ...
- MYSQL 表分区的 3 方法
背景知识: 表分区是把逻辑上同一范围的数据保存到同一个文件中,就和超市一样,把同类商品放在同一个区域,把不同的商品放在不同的地方.不同的是超市中 是根据用途分类的,表分区是根据它的取值区间来分的. 分 ...
- View, Activity, Window
View, Activity, Window 2010-03-02 10:42:56| 分类: android|举报|字号 订阅 对于屏幕显示而言,整个是window,这个window里显示 ...
- Linux下chkconfig命令详解(转)
Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...
- 构造函时和this指针
通常this指针在对象构造完毕后才完全生成,而在构造函数执行过程中,对象还没有完全生成,所以this指针也是没有完全生成的,在构造函数中使用this指针会存在问题,应该尽量避免. 构造函数中可以访问对 ...
- 直播视频插件--sewise player
直播视频插件 -- sewise player 2017-1-9 因为公司要开发一个关于购车直播的新项目,需要在页面引入直播视频,项目组之前都没有做过关于直播类型的项目,所以可以说是真的从各种资源中筛 ...
- CentOS6.5与XP双系统安装
因为工作的须要,须要安装一个XP系统和一个CentOS系统.依照在网上找到的一些方法尝试了下,结果都不是非常理想.最后,经过尝试和寻找,找到了一个比較方便的方法. 一.分区 本人的电脑硬盘是500G, ...
- Google C++ style guide——头文件
1.#define保护 使用#define防止头文件被多重包括.命名格式为:<PROJECT>_<PATH>_<FILE>_H_ 比如,foo中的头文件foo/sr ...