官网:http://www.json.org/json-zh.html lib下载:http://sourceforge.net/projects/json-lib/files/
实例:https://github.com/douglascrockford/JSON-java (这个实例可以研究一下,自己没有研究)
json.jsp:http://json-taglib.sourceforge.net/
其中org.json和json-lib比较简单,两者使用上差不多。
推荐的博客:
http://www.open-open.com/lib/view/open1381566882614.html(一个入门的例子)
http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html (这个例子比较全面)
自己的一些感悟:有时候需要组建或者拼接一些json格式的数据,那么就有两种思路:通过org.json的类来put一些元素来拼接,第二种方式就是通过,list、HashMap来存放数据,然后把这些List 、HashMap转换为json格式的数据;
最后,总结,没有找到直接把json数据转换成Java对象的方法,但是,可以自己简单的封装一下。据说,json-lib这个工具可有
注意事项:
JSONObject有很多optXXX方法,比如optBoolean, optString, optInt...
他们的意思是,如果这个jsonObject有这个属性,则返回这个属性,否则返回一个默认值
例如:
- JSONObject json = new JSONObject(content);
- int x = json.optInt("length", 0);
其他的optXXX方法都类似。
自己写的一些测试实例:
package test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONStringer;
import org.json.JSONTokener;
import org.junit.Test;
public class JsonObj {
@Test
public void test01() {
JSONObject obj = new JSONObject(new User(1, "yanfeng"));
try {
System.out.println(obj.getInt("id"));
System.out.println(obj.getString("name"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void test02() {
String json = "{'id':'1','name':'yanfeng'}";
JSONObject obj = null;
try {
obj = new JSONObject(json);
System.out.println(obj.getInt("id"));
System.out.println(obj.getString("name"));
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
@Test
public void jsonStringerTest() {
JSONStringer stringer = new JSONStringer();
try {
stringer.object().key("name").value("xiazdong").key("age")
.value(20).endObject();
System.out.println(stringer);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void jsonStringerTest2() throws Throwable {
JSONStringer jsonStringer = new JSONStringer();
JSONObject obj6 = new JSONObject();
obj6.put("title", "book1").put("price", "$11");
JSONObject obj3 = new JSONObject();
obj3.put("book", obj6);
obj3.put("author", new JSONObject().put("name", "author-1"));
JSONObject obj5 = new JSONObject();
obj5.put("title", "book2").put("price", "$22");
JSONObject obj4 = new JSONObject();
obj4.put("book", obj5);
obj4.put("author", new JSONObject().put("name", "author-2"));
JSONArray obj2 = new JSONArray();
obj2.put(obj3).put(obj4);
JSONObject obj1 = new JSONObject();
obj1.put("title", "BOOK");
obj1.put("signing", obj2);
jsonStringer.object().key("session").value(obj1).endObject();
System.out.println(jsonStringer.toString());
PrintWriter out = new PrintWriter(new FileOutputStream(
"D:\\fabu\\1.txt"));
out.println(jsonStringer.toString());
out.close();
}
@Test
public void JSONTokenerTest() throws Throwable {
JSONObject jsonobj = new JSONObject(new JSONTokener(new FileReader(
new File("D:\\fabu\\1.txt"))));
System.out.println(jsonobj.getJSONObject("session")
.getJSONArray("signing").getJSONObject(1).getJSONObject("book")
.getString("title"));
}
@Test
public void test05() throws Throwable{
String json = "{'name':'reiz'}";
JSONObject jsonObj = new JSONObject(json);
String name = jsonObj.getString("name");
jsonObj.put("initial", name.substring(0, 1).toUpperCase());
String[] likes = new String[] { "JavaScript", "Skiing", "Apple Pie" };
jsonObj.put("likes", likes);
Map <String, String> ingredients = new HashMap <String, String>();
ingredients.put("apples", "3kg");
ingredients.put("sugar", "1kg");
ingredients.put("pastry", "2.4kg");
ingredients.put("bestEaten", "outdoors");
jsonObj.put("ingredients", ingredients);
System.out.println(jsonObj);
System.out.println(jsonObj);
}
//最后,总结,没有找到直接把json数据转换成Java对象的方法,但是,可以自己简单的封装一下。据说,json-lib这个工具可有
}