import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

/**
 * 使用的是json-lib-2.4.jar
 * @author yes
 *
 */
public class TestJson {
    public static void main(String[] args) throws Exception {   
          //定义一个json对象
           JSONObject jo = new JSONObject();
           jo.put("id", "1");
           jo.put("name", "yang");
           jo.put("age", "13");

//定义一个Json数组
           JSONArray ja = new JSONArray();
           ja.add(0, "yang");
           ja.add(1,"li");
           ja.add(2, "zhang");

System.out.println("json对象的格式:"+jo);
           System.out.println("json数组的格式:"+ja);

//使用类自带的方法来转换成String类型
           String str_ = jo.toJSONString();
           String strs_ = ja.toJSONString();

System.out.println("json对象-->String"+str_);
           System.out.println("json数组-->String"+strs_);
    }       
}

执行结果:
json对象的格式:{"id":"1","age":"13","name":"yang"}
json数组的格式:["yang","li","zhang"]
json对象-->String{"id":"1","age":"13","name":"yang"}
json数组-->String["yang","li","zhang"]

3.Json在数据传输中的使用

a.将各种类型装换成Json类型字符串
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test03 {
    public static void main(String[] args) {        
    //创建一个User对象(name,age,id)
        User user = new User();
        user.setAge(22);
        user.setName("张三");
        user.setId(33);

List li = new ArrayList();  
        //创建一个Map,放入三组值
    Map<String, Object> hashMap = new HashMap<String, Object>();
           hashMap.put("name", "ZHULI");
           hashMap.put("age", "30");
           hashMap.put("id", "4");

//向List中放入数据   
            li.add(0, "123");
            li.add(1,"444");  
            li.add(hashMap);

//将List,Map,Bean---->json类型字符串  
            String stra = GsonUtil.GsonString(user);
            String strb = GsonUtil.GsonString(hashMap);
            String strc = GsonUtil.GsonString(li);

System.out.println("Bean-->String结果:"+stra);
            System.out.println("Map-->String结果:"+strb);
            System.out.println("List-->String结果"+strc);

}
}
执行结果:
Bean-->String结果:{"name":"张三","age":22,"id":33}
Map-->String结果:{"id":"4","age":"30","name":"ZHULI"}
List-->String结果["123","444,{"id":"4","age":"30","name":"ZHULI"}]

b.将各种类型的json类型字符串解析出来

//1.将JsonArray类型字符串转换成Bean或list

import java.util.List;
import Socket.User;

public class Test02 {

public static void main(String[] args) {
    //定义一个jsonArrayString
    String json = "[{'name':'yang','id':'1','age':'18'},"
            + "{'name':'zhang','id':'2','age':'13'}]";

//jsonString转list,User类自己创建,三个属性
    List<User> li = GsonUtil.jsonArrayToList(json,User.class);
    for(User user : li){
        String name = user.getName();
        Integer id = user.getId();
        Integer age = user.getAge();
        System.out.println("学生的姓名是:"+name+"  "+"ID是:"+id+"  "+"年龄是:"+age);
    }   
  }
}

执行结果:
学生的姓名是:yang  ID是:1  年龄是:18
学生的姓名是:zhang  ID是:2  年龄是:13

将JsonArray类型字符串转换成List中包含map的

import java.util.List;
import java.util.Map;

public class Test05 {
    public static void main(String[] args) {

String json = "['123','444',{'id':'4','age':'30','name':'ZHULI'}]";

//list中含有Map但不全是Map
        List li = GsonUtil.GsonToListMap(json);
        Map m  =(Map) li.get(2);        
        System.out.println(m.get("age"));

}
}
//如果list中全部是Map类型的数据,使用GsonToListMap();方法
执行结果:
30
123

c.实用性比较高的,复杂的数据转化成Bean进行操作

//先贴出学生类
package TestJson;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class Student {
    private String id;
    private String nickName;
    private String email;
    private String age;
    private List<String> books = new ArrayList<String>();
    private  HashMap<String, String> booksMap = new HashMap<String, String>();
    //获取set,get方法
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getNickName() {
        return nickName;
    }
    public void setNickName(String nickName) {
        this.nickName = nickName;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public List<String> getBooks() {
        return books;
    }
    public void setBooks(List<String> books) {
        this.books = books;
    }
    public HashMap<String, String> getBooksMap() {
        return booksMap;
    }
    public void setBooksMap(HashMap<String, String> booksMap) {
        this.booksMap = booksMap;
    }

}

//测试代码
package TestJson;

public class Test05 {
    public static void main(String[] args) {
    //定义一个包含list,map类型的字符串
        String json = "{'books':['数学','语文','英语','物理','化学','生物'],'booksMap':{'3':'英语','2':'语文','1':'数学','6':'生物','5':'化学','4':'物理'},'email':'965266509@qq.com','nickName':'小明','id':'1','age':'22'}";  
    //转化成Bean   
    Student su = GsonUtil.GsonToBean(json, Student.class);
    System.out.println("学生的姓名是:"+su.getNickName());
    System.out.println("学生学习的第一门课:"+su.getBooks().get(0));
    System.out.println("序号3课程是:"+su.getBooksMap().get("3"));
    }
}

执行结果:
学生的姓名是:小明
学生学习的第一门课:数学
序号3对应的课程是:英语

5.将基本的转化实现放到了一个工具类中。GsonUtil.java

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;

/**
 * 使用gson来操作Json
 * 1.对象实体类,list,map,等转化成----->jsonString(进行数据传递)
 * 2.jsonString转化成----->对象实体类,list,map(解析返回的数据)
 * 3.我使用的是gson-2.2.2.jar
 * @author yes
 *
 */

public class GsonUtil {

private static Gson gson = null;
    static {
        if (gson == null) {
            gson = new Gson();
        }
    }

/**
     * 将object对象转成json字符串(jsonString)
     * boject 可以是List,也可以是Bean(对象类型)
     * @param object
     */
    public static String GsonString(Object object) {
        String gsonString = null;
        if (gson != null) {
            gsonString = gson.toJson(object);
        }
        return gsonString;
    }

/**入参是json对象
     * 将gsonObjectString转成泛型bean(实体类)
     * @param gsonString
     */
    public static <T> T GsonToBean(String gsonString, Class<T> cls) {
        T t = null;
        if (gson != null) {
            t = gson.fromJson(gsonString, cls);
        }
        return t;
    }

/**
     * 这里的入参是json数组类型的字符串
     * jsonArrayString转成list
     */
    public static <T> List<T> jsonArrayToList(String json, Class<T> cls) {
        Gson gson = new Gson();
        List<T> list = new ArrayList<T>();
        JsonArray array = new JsonParser().parse(json).getAsJsonArray();
        for(final JsonElement elem : array){
            list.add(gson.fromJson(elem, cls));
        }
        return list;
    }

/**
     * List对泛型没有要求
     * jsonString转成list中有map的
     */
    public static <T> List<Map<String, T>> GsonToListMap(String gsonString) {
        List list = null;
        if (gson != null) {
            list = gson.fromJson(gsonString,
                    new TypeToken<List>() {
                    }.getType());
        }
        return list;
    }

/**
     * 要求List中全部是Map
     * jsonString转成list中有map的
     */
    public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) {
        List<Map<String, T>> list = null;
        if (gson != null) {
            list = gson.fromJson(gsonString,
                    new TypeToken<List<Map<String, T>>>() {
                    }.getType());
        }
        return list;
    }

/**
     * jsonString转成map的
     */
    public static <T> Map<String, T> GsonToMaps(String gsonString) {
        Map<String, T> map = null;
        if (gson != null) {
            map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
            }.getType());
        }
        return map;
    }

/**
     * map转jsonString,指定了Map类型
     */
    public static String MapToJson(Map<String,Object> map){
        String str = null;
        if(gson != null){
            str = gson.toJson(map);
        }
        return str;
    }    
}

java中的json使用的更多相关文章

  1. JAVA中使用JSON进行数据传递

    最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作. 其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JS ...

  2. 转载:JAVA中使用JSON进行数据传递

    转载网址:http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html 最近在做一个基于JAVA Servlet的WEB应用以及对应的An ...

  3. JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson

    java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...

  4. Java中哪个JSON库的解析速度是最快的?

    JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考 了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上 ...

  5. 3、示例(在java中使用JSON)

    教程链接(json-smple1.1.1.jar文件) 链接:http://pan.baidu.com/s/1qXPbYHm 密码:v0f0 如何使用java编程语言编码和解码JSON 首先准备环境以 ...

  6. JAVA中,JSON MAP LIST的相互转换

    1 JSON包含对象和数组,对应于JAVA中的JSONObject,JSONArray 2 String 转JSON对象 JSONObject.fromObject("String" ...

  7. java中对于JSON 的处理 fastjson gson 系统自带的JSON 的选择

    从2月初到8月末,经历了一段痛苦的经历,现在总算感觉已经走出来了,经历那事之后 感觉对人与人之间的感情看的更透了,人也没那么浮躁了: 说实话 以前从来不知道鸟叫有多好听,现在突然觉的大自然真的很美,放 ...

  8. java 中关于json的使用方法

    json在数据传输起了很大的作用,下面说说java中json的使用方法. 文章参考:http://www.codes51.com/article/detail_99574.html json串示例 [ ...

  9. Java中的Json序列化,不容忽视的getter

    在开发的过程中,经常会碰到和自己预期不一样的情况.有的时候自己去研究一下还是很有趣的.这两天在写java web的时候,碰到了一个对象序列化的问题. 问题重现 public class AjaxJso ...

  10. 使用Jackson在Java中处理JSON

    在工作中实际使用到Java处理JSON的情况,且有很大部分都使用的是开源工具Jackson实现的. 一.入门 Jackson中有个ObjectMapper类很是实用,用于Java对象与JSON的互换. ...

随机推荐

  1. c# rc4算法,加密解密类

    rc4算法,原理,以密匙生成256位的密匙流,然后以车轮式滚过源数据异或加密. /* * 由SharpDevelop创建. * 用户: YISH * 日期: 04/04/2015 * 时间: 03:0 ...

  2. 卡片式大学综合英语词汇(Windows Phone 8.1 RT app)

    简易卡片式记单词app.词库是原滋原味的大学综合英语词汇,包含语音,使用卡片式设计.离线词库,随时随地记单词. 商店:http://www.windowsphone.com/zh-cn/store/a ...

  3. IntelliJ Idea下Go项目开启Debug调试

    1.新建Go项目,创建入口go文件(Test1.go),随便写点啥,比如: package main import "fmt" func main(){ fmt.Println(& ...

  4. 字体样式(.ttf/.woff)文件的配置引入

    在引入前端框架部分功能时,有时需要配置字体样式.可以这样配置:在 .ttf的同级目录下,创建icon.css文件,写入: @font-face {font-family: "element- ...

  5. Linux mysql-5.7.17安装 教程

    1.下载安装文件 #mkdir /data #mkdir /data/software #cd  /data/software #wget http://dev.mysql.com/get/Downl ...

  6. 小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理)

    小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理) 异常处理(处理) 1.产生异常.raise 异常类(),抛出异常2. 处理异常: try: xxxxx # 尝试执行的代码. ...

  7. STM32 USB转串口驱动安装不成功出现黄色感叹号解决方法!

    相信很多人在做USB转串口时出现过串口驱动安装不成功,出现黄色感叹号问题, 出现这种问题一般是驱动安装不成功造成的. 这里我就这个问题总结几个简单的方法. 方法1: 插上USB,利用驱动人生安装驱动. ...

  8. array_combine php一个比较偏门的数组函数

    这函数  返回数组1的值 当做key,把数组2的值当做value,   当查询数据库用了 group +GROUP_CONCAT 两个组合时,(例如查询某个班级的,用户名,用户id,返回的是字符串,打 ...

  9. HDU 3625

    有点置换群的味道. 当撞开一个门后,能打开一连串的门,即是可以排成一个圈.求的是种数,于是,可以使用第一类斯特林数,求出撞了0~K次的种数. 但是,注意,当第一个门为独自一个圈时,是不可行的,因为这代 ...

  10. Webstorm快捷键整理

    Webstorm快捷键整理 F2/Shift F2  下一个/上一个高亮错误 Ctrl+Shift+BackSpace 回到刚刚编辑的地方 Alt+Insert 新建文件,还有其他功能 Ctrl+D ...