`

JAVA解析JSON数据Ⅰ【转载:http://www.java3z.com/cwbwebhome/】

阅读更多

一 简介:

     JSON(JavaScript对象符号)是一种轻量级的数据交换格式。这是很容易为人类所读取和写入。这是易于机器解析和生成。它是基于JavaScript编程语言的一个子集 , 标准ECMA-262第三版- 1999年12月。JSON是一个完全独立于语言的文本格式,但使用C家族的语言,包括C,C + +,C#,Java中的JavaScript,Perl的,Python中,和许多其他程序员所熟悉的约定。这些特性使JSON成为理想的数据交换语言。他和map很类似,都是以

键/值 对存放的。

 

二 JSON 要用的JAR包:

 

commons-lang.jar

commons-beanutils.jar

commons-collections.jar

commons-logging.jar

ezmorph.jar

json-lib-2.2.2-jdk15.jar

 

 

 

三 使用JSON中的JSONObject:

1.创建一个JSONObject对象,并使用put();方法添加元素:

首先我们创建一个User对象以备后用:

 

public class User {

 private int id;

 private String name;

 private String pwd;

 private String sex;

 //get,set方法

 @Override

 //重写他的toString方法

 public String toString() {

   return this.name+"--"+this.pwd+"--"+this.sex;

 }

}

例子如下:

 

import net.sf.json.JSONObject;

public class TestJson {

 private static JSONObject json = null;

public static void main(String[] args) {

json = new JSONObject();

json.put("id","1");

json.put("name","张三");

json.put("pwd","123456");

System.out.println(json);

}

}

运行:

C:\java>java TestJson

{"id":"1","name":"张三","pwd":"123456"}

 

通过这段代码我们就能很清淅的看到他的添加元素和map集合方式一样。

现在我们要将这个json对象放进一个JAVABEAN的User对象怎么弄呢?很简单

我们须要在 TestJson 类中的主方法中加入(放在System.out.println(json)这句话后面)

 

User user = new User();

user.setId(Integer.parseInt(json.getString("id")));

 

//json.getString("id")就是通过他的KEY值取得对应的value值

user.setName(json.getString("name"));

user.setPwd(json.getString("pwd"));

System.out.println(user);

 

这样我们就把json这个对象里的值放进user对象里面了。

运行:

C:\java>java TestJson

{"id":"1","name":"张三","pwd":"123456"}

张三--123456--null

 

json添加元素除了用put();方法之外还可以用element();如:json.element("11", "222");

 

2.创建一个JSONArray对象,并添加元素:

 

JSONArray添加元素和list集合一样,当然取值也很像,代码如下

import net.sf.json.*;

public class TestJson1 {

 private static JSONObject json = null; 

 private static JSONArray  jsonArray = null;

 public static void main(String[] args) { 

       jsonArray = new JSONArray ();

       jsonArray.add(0, "张三"); 

       jsonArray.add(1, "李四"); 

       jsonArray.add(2, "王五");

       jsonArray.add(3, "小三"); 

       System.out.println(jsonArray); 

       System.out.println(jsonArray.get(1));  

   }

 } 

输出结果为:

["张三","李四","王五","小三"]

李四

 

注:json的基本格式这些网上很多,就不多说了,我们只须记住一句话就行了:[]表示数组,{}表示对象就完了!

 

 

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());

         }

自定义封装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);

     }

 }

 

分享到:
评论

相关推荐

    java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingExcepti

    jackson-annotations-2.10.2.jar jackson-core-2.10.2.jar jackson-databind-2.10.2.jar NoClassDefFoundError解决

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子...02.&lt;web-app xmlns:xsi=...

    android调用国家气象局天气预报接口json数据格式解释

    国家气象局提供了三种数据的...数据解析格式: 第一个网址提供的json数据为: 代码如下:{“weatherinfo”:{“city”:”北京”,”cityid”:”101010100″,”temp”:”-2″,”WD”:”西北风”,”WS”:”3级”,”SD”:

    java 解析 json文件 java 解析 json文件

    Java解析JSON文件是Java开发中常见的一项任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写的特点,被广泛应用于网络数据传输...

    JSONObject必包的Jar包及json生成的简单案例

    组装和解析JSONObject的Json字符串,共需要下面六个包: 1、json-lib 2、commons-beanutils 3、commons-collections 4、commons-lang 5、commons-logging 6、ezmorph 第零个包: json-lib-2.4-jdk15.jar ...

    使用json-lib-2.2.2-jdk15.jar所要用到的jar包

    json-lib-2.2.3-jdk15.jar commons-beanutils-1.7.0.jar commons-httpclient-3.1.jar commons-lang-2.3.jar commons-logging-1.1.1.jar commons-collections-3.2.1.jar ezmorph-1.0.3.jar 如果不关联这些包,则会...

    sublime text channel_v3.json

    简单讲https://packagecontrol.io/channel_v3.json获取失败,直接在浏览器中打开该链接,下载channel_v3.json文件,直接放到本地路径,并修改Package Control.sublime-sUser-ettings中的channels的值为本地的绝对...

    12源码数据可视化:基于 Echarts + Java SpringBoot 实现的动态实时大屏范例-供应商大屏.zip

    1. 前后端分离:前端 Echarts...3. 数据格式:JSON; 更多Python&Echarts版的数据可视化大屏源码: https://yydatav.blog.csdn.net/article/details/120705616 更多Java SpringBoot&Echarts版的数据可视化大屏源码: ...

    java-json.7z

    at org.json.JSONObject.(JSONObject.java:144) ## 缺少的东西 at org.apache.sqoop.util.SqoopJsonUtil.getJsonStringforMap(SqoopJsonUtil.java:43) at org.apache.sqoop.SqoopOptions.writeProperties...

    Json解析工具之fastJson

    1、遵循http://json.org标准,为其官方网站收录的参考实现之一。 2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。 3、无依赖,不需要例外额外的jar,能够直接跑在JDK...

    kettle解析json串

    根据提供的信息,我们可以深入探讨如何在Kettle中解析JSON串,并连接数据库进行数据处理。本文将详细介绍使用Java库解析JSON的基本方法以及如何在Kettle环境中实现这一过程。 ### Kettle与JSON解析概述 #### 1. **...

    使用Gson解析Json数据

    1、生成Json数据 2、使用Gson解析Json数据(单个json对象、json数组和json对象内嵌json数组) // 这里有两篇好心人的博文,有详细的讲解 http://www.jb51.net/article/32547.htm ...

    Open with http://json.parser.online.fr/-crx插件

    根据相关站点的隐私规则,在http://json.parser.online.fr/上解析和格式化JSON。 此扩展程序仅需保存一些额外的单击,即可在http://json.parser.online.fr/的任何页面上打开任何选定的JSON文本,以进行解析和格式化...

    json所有的jar包下载

    json-lib-2.2.3-jdk15.jar commons-beanutils-1.7.0.jar commons-httpclient-3.1.jar commons-lang-2.3.jar commons-logging-1.1.1.jar commons-collections-3.2.1.jar ezmorph-1.0.3.jar 如果不关联这些包,则会...

    Jamendo android开源在线音乐播放器

    Jamendo 官方网站:http://www.jamendo.com/en/ 分享的内容依次是: 1.分析Music搜索实现,主要是网络和JSON传输 2.分析全局Application缓存实现方法 3.分析Download模块 4.分析Adapter使用 5.分析全局...

    java解析json数据

    Java中解析JSON数据主要依赖于一些库,如org.json库(包含JSONObject和JSONArray类)。 在Java中,解析JSON数据的步骤通常分为以下几个部分: 1. **导入相关库**:首先,你需要在项目中引入JSON库。如果是使用...

    JAVA 解析JSON格式数据

    本篇文章将深入探讨如何在Java中解析JSON格式的数据,我们将参考提供的博文链接进行讲解。 首先,Java中解析JSON主要有两个主流库:Jackson和Gson。Jackson是目前最流行的Java JSON库之一,它提供了高性能和丰富的...

    com.fasterxml.jackson

    通常来说,我们在日常开发中使用的是第3种方式,有时为了简便也会使用第2种方式,比如你要从一个很大的Json对象中只读取那么一两个字段的时候,采用databind方式显得有些重,JsonNode反而更简单。 作者:无知者云 ...

    从网络获取解析json的android demo

    在Android开发中,从网络获取并解析JSON数据是一项常见的任务,尤其在构建应用程序时,我们需要与服务器进行数据交互,获取动态内容。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易于人...

    json实战1源码.zip

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成。在Android开发中,JSON广泛用于与服务器进行数据交互,无论是发送请求还是接收响应,它都扮演着重要...

Global site tag (gtag.js) - Google Analytics