java 怎么定义一个json

一 简介:
     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);
     }
 }




原文:https://zhidao.baidu.com/question/1929032965588349027.html

处理嵌套json格式的数据。。。 public static void main(String[] args) { // 官方API http://www.json.org/java/ /* 购物车中信息 goods_cart={cart_1325036696007:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"b555bfj05d7dcg307h91323398584156",specsstr:"颜色:黑色 尺寸:L",price:4765,stock:15,count:6},cart_1325036702105:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"787a9f5he93chcifh951323398314484",specsstr:"颜色:黑色 尺寸:XL",price:4700.15,stock:12,count:1},cart_1325136643984:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100015_00399656_68.jpg",specs:"8466347bi6eia43hd6j1323398639859",specsstr:"颜色:灰色 尺寸:XL",price:4600,stock:3,count:1}}; * **/ try{ String s0 = "{cart_1325036696007:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"b555bfj05d7dcg307h91323398584156",specsstr:"颜色:黑色 尺寸:L",price:4765,stock:15,count:6},cart_1325036702105:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"787a9f5he93chcifh951323398314484",specsstr:"颜色:黑色 尺寸:XL",price:4700.15,stock:12,count:1},cart_1325136643984:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100015_00399656_68.jpg",specs:"8466347bi6eia43hd6j1323398639859",specsstr:"颜色:灰色 尺寸:XL",price:4600,stock:3,count:1}};"; String s= java.net.URLDecoder.decode(s0, "utf-8"); System.out.println(s); JSONObject o = new JSONObject(s); System.out.println(o.get("cart_1325036696007")); //根据属性,获取值 System.out.println(o.toString()); //得到字符串 System.out.println(o.names().get(2)); //获取对象中第三组属性名 System.out.println(o.names().length()); //获取对象中属性个数 //System.out.println(o.names().getJSONArray(1)); //获取对象中属性个数 //names(jsonObjectName) 私有方法 获取该对象的所有属性名,返回成JSONArray。 //JSONObject.getNames(jsonObjectName) 静态方法 获取对象的所有属性名,返回成数组。 System.out.println(JSONObject.getNames(o.getJSONObject("cart_1325036696007"))[1]); System.out.println(o.getJSONObject("cart_1325036696007").names().get(1)); System.out.println(o.length()); //共有几组对象 System.out.println(o.has("cart_1325036696007")); //有无该该值 /* 遍历json中的每一组元素*/ String name = null; JSONObject t_o = null; for(int i=0; i<o.length(); i++){ name = JSONObject.getNames(o)[i]; System.out.println("商品项ID:"+name); t_o = o.getJSONObject(name); for(int j=0; j< t_o.length(); j++){ name = JSONObject.getNames(t_o)[j]; System.out.print(name+":"+t_o.get(name)+" "); } System.out.println(); } }catch(Exception e){ e.printStackTrace(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值