JSON——Java中的使用

1. 构建JSON方法(数据——>JSON)

这里使用Maven构建项目

在pom.xml中添加如下依赖

 <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20090211</version>
    </dependency>

1.1 创建JSONObject对象,利用put(key,value)赋值,toString() 打印出JSON格式

关键词:JSONObject对象,put(), toString()

public class JsonObjectSimple {

    public static void main(String[] args) {
        jSONObjectSimple();
    }

    private static void jSONObjectSimple() {

        JSONObject xiaofeng=new JSONObject();
        Object nullObj=null;//因为put()方法的原因,这里不能直接使用null,所以创建null的对象来跳过编译器的检查
        try {
            xiaofeng.put("name", "小峰");
            xiaofeng.put("age", 22);
            xiaofeng.put("birthday", "1999-11-22");
            xiaofeng.put("school", "Qinghua University");
            xiaofeng.put("major", new String[] {"sing","coding"});
            xiaofeng.put("girlfriend", "true");
            xiaofeng.put("car",nullObj); //不能直接使用null,需要创建null的对象来跳过编译器的检查
            xiaofeng.put("comment","JSON里不能直接使用注释,需要添加时可通过此方式。。");

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println(xiaofeng.toString());
    }
}

控制台输出后复制其到 http://www.jsoneditoronline.org/ 可查看 JSON 数据结构

1.2 通过 HashMap 构建

关键词:HashMap() , put() , toString() , JSONObject(xiaofeng)

private static void createJSONByMap() {

        Map<String,Object> xiaofeng=new HashMap<String,Object>();
        Object nullObj=null;
        xiaofeng.put("name", "小峰");
        xiaofeng.put("age", 22);
        xiaofeng.put("birthday", "1999-11-22");
        xiaofeng.put("school", "Qinghua University");
        xiaofeng.put("major", new String[] {"sing","coding"});
        xiaofeng.put("girlfriend", "true");
        xiaofeng.put("car",nullObj); //不能直接使用null,需要创建null的对象来跳过编译器的检查
        xiaofeng.put("comment","JSON里不能直接使用注释,需要添加时可通过此方式。。");

        System.out.println(new JSONObject(xiaofeng).toString());
    }

3. 使用 JavaBean 创建 JSON

关键词:JavaBean,  setXxx(),  JSONObject(xiaofeng)

首先创建 JavaBean 类Person(略),  之后创建。。。

private static void createJSONByBean() {
      //创建Person对象,利用set()方法赋值,最后转为JSONObject对象输出
        Person xiaofeng=new Person();
        xiaofeng.setName("小峰");
        xiaofeng.setAge(22.5);
        xiaofeng.setGirlfriend(true);
        xiaofeng.setMajor(new String[]{"唱歌","coding"});

        System.out.println(new JSONObject(xiaofeng));
    }

注意,在创建JavaBean时,由于JSON不支持date格式,所以日期格式需要设置为String类型,这也是JSON的缺陷。

2. 解析读取JSON数据(JSON——>数据)

xiaofeng.json
{
  "birthday": "1999-11-22",
  "girlfriend": "true",
  "major": [
    "sing",
    "coding"
  ],
  "school": "Qinghua University",
  "car": null,
  "name": "小峰",
  "comment": "JSON里不能直接使用注释,需要添加时可通过此方式。。",
  "age": 22
}

从文件中读取JSON

关键词:

ReadJSON.class.getResource("/xiaofeng.json").getFile() ,JSONArray,readFileToString(file)

public class ReadJSON {

    public static void main(String[] args) throws IOException, JSONException {
        //获取本文件路径下的json文件
        File file=new File(ReadJSON.class.getResource("/xiaofeng.json").getFile());
        //读取json文件内容
        String content=FileUtils.readFileToString(file);
        JSONObject jsonObject =new JSONObject(content);
        System.out.println("姓名是 :"+jsonObject.getString("name"));
        System.out.println("年龄是 :"+jsonObject.getDouble("age"));
        System.out.println("有女朋友吗 ?"+jsonObject.getBoolean("girlfriend"));
               //数组类型转换成JSONArray类型来解析,不能直接读取
        JSONArray majorArray=jsonObject.getJSONArray("major");
        for(int i=0;i<majorArray.length();i++){
            String m=(String) majorArray.get(i);
            System.out.println("专业——"+(i+1)+m);
        }
    }

}

控制台输出

              

为增加程序健壮性,可在JSON数据解析时加入 非空【isNull()】 判断

     //判断 name 是否为空
        if (!jsonObject.isNull("name")) {
            System.out.println("姓名是 :" + jsonObject.getString("name"));
        }
        //反例,无输出
        if (!jsonObject.isNull("nme")) {
            System.out.println("姓名是 :" + jsonObject.getString("name"));
        }

        System.out.println("年龄是 :" + jsonObject.getDouble("age"));
时间: 2024-08-08 13:57:05

JSON——Java中的使用的相关文章

java 中关于json的使用方法

json在数据传输起了很大的作用,下面说说java中json的使用方法. 文章参考:http://www.codes51.com/article/detail_99574.html json串示例 [{"id":1,"name":"name1","password":"password1","remark":"remark1"},{"id":2,&

Java中json工具对比分析

Java中几个json工具分析 1, 环境 JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码 2,分析对象 jackson1.8.2 http://jackson.codehaus.org/ gson1.7.1 http://code.google.com/p/google-gson/ jsob_lib2.4 http://json-lib.sourceforge.NET/ 3,使用实例          用两个bean进行测试,两个bean都嵌套有数组和对象,

java中的使用锯齿进行类别管理和json交互

java中提供锯齿数据,某些时候特别有用,比如用groupid映射userid.在无论涉及到http数据还是json数据保存护着传输. public static void main(String[] args) {   //使用在json数据转换中      int[][] groups = new int[3][];    groups[0] = new int[]{1,3,4,5};    groups[1] = new int[]{6,2};    groups[2] = new int

JAVA中,JSON MAP LIST的相互转换

1 JSON包含对象和数组,对应于JAVA中的JSONObject,JSONArray 2 String 转JSON对象 JSONObject.fromObject("String"); String 转JSON数组 JSONArray.fromObject("String"); 3 List 和 JSON互转 JSONObject.toBean() JSONArray.fromObject(List) JAVA中,JSON MAP LIST的相互转换,布布扣,bu

java中使用net.sf.json对json进行解析

net.sf.json依赖的包很多. 有commons-collections,commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph-1.0.5.jar,morph-1.1.1.jar /** * 从一个JSON 对象字符格式中得到一个java对象,形如: * {"id" : idValue, "name" : nameValue, "aBean" : {&qu

快速掌握Ajax-Ajax基础实例(Ajax返回Json在Java中的实现)

(转)实例二:Ajax返回Json在Java中的实现 转自http://www.cnblogs.com/lsnproj/archive/2012/02/09/2341524.html#2995114 在这篇中主要是说一下使用Json来将后台取得的数据显示到前台页面.可以说这种方法应该是实现无刷新分页的基础,而且在开发过程中经常被用到.这里的后台部分由JAVA来实现. 这个例子也在上一篇中那个项目中实现.新建一个SecondTest.html页面,定义一个按钮,并给这个按钮绑定事件ajaxJson

Java中构造和解析JSON

什么是 Json? JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式.  易于人阅读和编写.同时也易于机器解析和生成.它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集.  JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括C, C++, C#

我的Android进阶之旅------&gt;解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

1.问题描述 首先,需要解析的Json数据类似于下面的格式: { ret: 0, msg: "normal return.", news: [ { id: "NEW2016062800875700", from: "腾讯新闻客户端", qqnews_download_url: "http://inews.qq.com/m?refer=openapi_for_xiaotiancai", articletype: "1&

Java中关于Json对象类型和字符串类型之间互相转化的问题

Java中关于Json格式转化Object,Map,Collection类型和String类型之间的转化在我们实际项目中应用的很是普遍和广泛.最近工作的过程中也是经常有,因此,自己封装了一个JsonUtil.java类. 所需要的jar包:slf4j-jdk14-1.5.6.jar,slf4j-api-1.5.6.jar------>此两个jar包是slf4j日志jar包 jackson-annotations-2.1.1.jar,jackson-core-2.1.1.jar,jackson-d