java 怎麼定義一個json
阿新 • • 發佈:2019-01-02
一 簡介: 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