1. 程式人生 > >java 怎麼定義一個json

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