今天学习一下Java 解析 JSON
Game Starts
参考文档
1) www.json.org
2 ) 参考公司其他人的代码(这个就不说了)
依赖jar包
1) org.json.jar 提供以下我的网盘链接
主要的类
JSON主要有两种结构
1)name/value 的集合
2)value 的集合,在大多数语言中的list,array等,这里的 value 个人觉得就是一个JSON,也就是说是JSON的集合
JAVA处理JSON的类
1) JSONObject 有点类似于Map, 和JSON结构一致,key一般为String,value 不统一(string,int,array……)
2) JSONArray JSONObject数组
What's Up
解析网络上传过来的JSON对象怎么办(给个笨法子)
1 String url;2 InputStream is = new URL(url).openStream(); 3 BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8")); 4 StringBuffer jsonBuffer = new StringBuffer(); 5 String line; 6 while((line = br.readLine()) != null) { 7 jsonBuffer.append(line); 8 }
遇到个问题:在本机调试的很好,但是部署到服务器就不行了。
解决办法:url用utf-8处理一下,嘿嘿!
1 java.net.URLEncoder.encode(url, "utf-8")
Always Be Coding
创建JSON
1 package server; 2 3 import org.json.JSONArray; 4 import org.json.JSONException; 5 import org.json.JSONObject; 6 7 public class JSonCreator { 8 public static String getJSONString() throws JSONException { 9 JSONObject jsonObjet = new JSONObject();//书架10 jsonObjet.put("total", 3);//3本书11 JSONArray jsonaArray = new JSONArray();//书的集合12 JSONObject sub = new JSONObject();//一本书13 sub.put("bookName", "book1");//书名14 sub.put("price", 12.0);//价格15 sub.put("publisher", "p1");//出版社16 jsonaArray.put(sub);17 sub = new JSONObject();18 sub.put("bookName", "book2");19 sub.put("price", 22.0);20 sub.put("publisher", "p2");21 jsonaArray.put(sub);22 sub = new JSONObject();23 sub.put("bookName", "book3");24 sub.put("price", 32.0);25 sub.put("publisher", "p3");26 jsonaArray.put(sub);27 jsonObjet.put("books", jsonaArray);28 return jsonObjet.toString();29 }30 public static void main(String[] args) throws JSONException {31 System.out.println(getJSONString());32 33 }
显示结果(自己打了几个换行)
{ "total":1234, "books":[ { "price":12,"publisher":"p1","bookName":"book1"}, { "price":22,"publisher":"p2","bookName":"book2"}, { "price":32,"publisher":"p3","bookName":"book3"} ]}
解析JSON
1 package client; 2 3 import org.json.JSONArray; 4 import org.json.JSONException; 5 import org.json.JSONObject; 6 7 import server.JSonCreator; 8 9 public class JSonParser {10 public static void parseJSON(String json) throws JSONException {11 12 JSONObject jsonObject = new JSONObject(json);//书架13 System.out.println("total:"+jsonObject.getInt("total"));//数量14 JSONArray jsonArray = jsonObject.getJSONArray("books");//书集合15 for(int i = 0; i < jsonArray.length(); i++) {16 JSONObject book = jsonArray.getJSONObject(i);17 System.out.print("bookName : " + book.getString("bookName"));18 System.out.print(" price : " + book.getDouble("price"));19 System.out.print(" publisher : " + book.getString("publisher"));20 System.out.println();21 }22 }23 public static void main(String[] args) throws JSONException {24 String json = JSonCreator.getJSONString();25 parseJSON(json);26 }27 }
显示结果
total:3bookName : book1 price : 12.0 publisher : p1bookName : book2 price : 22.0 publisher : p2bookName : book3 price : 32.0 publisher : p3