Javaを用いてJsonデータを構築し解析する2つの方法(詳細1)

5898 ワード

JSON(JavaScript Object Notition)は軽量レベルのデータ交換フォーマットであり、言語から完全に独立したテキストフォーマットを採用し、理想的なデータ交換フォーマットである.また、JSONはJavaScriptのオリジナルフォーマットであり、JavaScriptでJSONデータを処理するには特別なAPIやツールパッケージが必要ないことを意味します.
www.json.orgには多くのJAVA下のjson構造と解析ツールが公表されており、その中でorg.jsonとjson-libは比較的簡単で、両者の使用には差は少ないが、まだいくつかの違いがある.まず,Json−libを用いてJsonデータを構築し解析する方法の例を紹介する.
使用org.son構造とJsonデータの解析方法の詳細は、Java構造とJsonデータの解析を使用する2つの方法(詳細2)を参照してください.
一、紹介
JSON-libパッケージはbeans,collections,maps,java arraysとXMLとJSONが互いに変換するパッケージで、主にJsonデータを解析するために使用され、その公式サイトでhttp://www.json.org/詳しく説明してあるので、興味があれば研究してもいいです.
二、jar依存パッケージのダウンロード:ここでダウンロードできます
三、基本方法の紹介
1.Listコレクションをjsonメソッドに変換

List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list ); 

2.Mapコレクションをjsonメソッドに変換

Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
JSONObject json = JSONObject.fromObject(map); 

3.Beanをjsonコードに変換

JSONObject jsonObject = JSONObject.fromObject(new JsonBean()); 

4.配列をjsonコードに変換

boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray); 

5.一般データをjsonコードに変換

JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );

6.beansをjsonコードに変換

List list = new ArrayList();
JsonBean2 jb1 = new JsonBean2();
jb1.setCol(1);
jb1.setRow(1);
jb1.setValue("xx");
JsonBean2 jb2 = new JsonBean2();
jb2.setCol(2);
jb2.setRow(2);
jb2.setValue("");
list.add(jb1);
list.add(jb2);
JSONArray ja = JSONArray.fromObject(list); 

四、デモの例
ここでは基本的ないくつかの一般的な方法でテストを行います.

package com.json;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
*   json-lib     Json  
* 
* @author Alexia
* @date 2013/5/23
*
*/
public class JsonTest {
/**
*   Json  
* 
* @return
*/
public static String BuildJson() {
// JSON        
JSONObject jo = new JSONObject();
//       map、  list   Employee  
Map map1 = new HashMap();
map1.put("name", "Alexia");
map1.put("sex", "female");
map1.put("age", "23");
Map map2 = new HashMap();
map2.put("name", "Edward");
map2.put("sex", "male");
map2.put("age", "24");
List list = new ArrayList();
list.add(map1);
list.add(map2);
Employee employee = new Employee();
employee.setName("wjl");
employee.setSex("female");
employee.setAge(24);
//  Map   JSONArray  
JSONArray ja1 = JSONArray.fromObject(map1);
//  List   JSONArray  
JSONArray ja2 = JSONArray.fromObject(list);
//  Bean   JSONArray  
JSONArray ja3 = JSONArray.fromObject(employee);
System.out.println("JSONArray      :");
System.out.println(ja1.toString());
System.out.println(ja2.toString());
System.out.println(ja3.toString());
//   Json  ,    map   Employee  
jo.put("map", ja1);
jo.put("employee", ja2);
System.out.println("
JSON :"); System.out.println(jo.toString()); return jo.toString(); } /** * Json * * @param jsonString Json */ public static void ParseJson(String jsonString) { // employee ,map JSONObject jb = JSONObject.fromObject(jsonString); JSONArray ja = jb.getJSONArray("employee"); List empList = new ArrayList(); // Employee ( ) for (int i = 0; i < ja.size(); i++) { Employee employee = new Employee(); employee.setName(ja.getJSONObject(i).getString("name")); employee.setSex(ja.getJSONObject(i).getString("sex")); employee.setAge(ja.getJSONObject(i).getInt("age")); empList.add(employee); } System.out.println("
Json Employee :"); for (int i = 0; i < empList.size(); i++) { Employee emp = empList.get(i); System.out.println("name: " + emp.getName() + " sex: " + emp.getSex() + " age: " + emp.getAge()); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ParseJson(BuildJson()); } }

実行結果は次のとおりです.
五、org.json比較
json-libとorg.jsonの使用はほとんど同じで、私がまとめた違いは2つあります.
1. org.jsonはjson-libよりずっと軽量で、前者は他のjarパッケージに依存していないが、後者はezmorphやcommonsのlang、logging、beanutils、collectionsなどのコンポーネントに依存する.
2.json-libはbeanを構築するときとbeanを解析するときの比org.jsonは便利で、json-libは直接beanと互いに変換することができて、org.jsonはbeanと直接変換することができずmapを中継として必要とし,beanをjsonデータに変換するにはまずbeanをmapに変換してからmapをjsonに変換する必要があり,面倒である.
要するに、やはりその言葉――自分に合っているのが一番いいので、必要に応じてどの方法を使って解析するかを選びましょう.最後にJsonデータを解析する2つのツールを紹介します.1つはオンラインツールJSON Editです.http://braincast.nl/samples/jsoneditor/);もう一つはEclipseのプラグインJSON Tree Analyzerで、どれも使いやすいので、おすすめです!
以上、Javaを使った構造とJsonデータの解析の2つの方法(詳しくは1つ)をご紹介しましたが、皆さんの役に立つことを願っています.