您的位置:首页 > Web前端 > JavaScript

ORG的JSON解析

2016-06-26 16:09 405 查看
org解析JSON文件

 *

 * 总结:

 * 1、org中提供了两个主要的类用来操作json中的对象和数组格式

 * JSONObject对象类和JSONArray数组类

 * 2、json对象和java对象之间可以相互转换(比较麻烦)

 * 3、解析数据,可以通过json的key值去获取对应的value值

 *

 * 附注:JSONTokener类可以通过IO流去解析json文件

 * JSONStringer类可以通过字符串的拼接创建json对象或数组,按照key值和value值的顺序进行拼接

 *

 * 注意:使用IO流读取json文件时,一定要设置好读取的编码格式,否则有可能出现乱码

 * 底层如果是数组类型的,不能直接转换为JSONObject,否则会显示{"empty":false};

 */

public class ORGjson {

public static void main(String[] args) throws Exception {
/**
* --------------1、json对象的使用
*/
//创建json对象
JSONObject object=new JSONObject();

//添加java的对象,其实是添加对象的toString值
object.put("student", new Student(1001,"杨钰莹",98.7));

//把学生对象转换为一个json对象
JSONObject object2=new JSONObject(new Student(1002,"张曼玉",89.3));

//把json格式的字符串转换为json对象
String json="{\"var\": \"多云\",\"s2\": \"多云\",\"f1\": \"duoyun\",\"f2\": \"duoyun\",\"t1\": \"32\",\"t2\": \"24\",\"p1\": \"≤3\",\"p2\": \"≤3\",\"d1\": \"无持续风向\",\"d2\": \"无持续风向\"}";
JSONObject object3=new JSONObject(json);

//java的map集合转换为json对象
JSONObject object4=new JSONObject(JSONUtil.getMapData());

//根据key值获取value值
System.out.println(object4.get("lisi"));

//java的list集合转换为json对象
JSONObject object5=new JSONObject(JSONUtil.getListData());
//{"empty":false} 底层是数组结构,不能直接转换为json的对象
//System.out.println(object5);

/**
* ----------2、json数组的使用
*/

//list集合转换为json数组
JSONArray array=new JSONArray(JSONUtil.getListData());
//获得json数组中指定位置的对象,第三个...
//System.out.println(array.get(2));

//获得json数组中指定位置的对象,需要强转
JSONObject object6=(JSONObject) array.get(2);
//System.out.println(object6);

// 把json对象包装为java中的对象,注意:设置对象属性时,必须一致
Student student=new Student();
student.setId(object6.getInt("id"));
student.setName(object6.getString("name"));
student.setScore(object6.getDouble("score"));
//System.out.println(student);

/**
* -------- 3、json本地文件的解析
*/
//文件读取流
InputStream inputStream=new FileInputStream("data.json");
//字符读取流(字节流转换为字符流,设置读取的编码)
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));

//JSONTokener对象可以通过IO流解析json文件
JSONObject object7=new JSONObject(new JSONTokener(reader));

//根据key值获取value值,创建一个json对象
JSONObject object8=object7.getJSONObject("weatherinfo");

//根据key值过去value值
// System.out.println(object8.get("city_en"));

/**
* -------- 4、解析网络上的json文件
*/
System.out.println("=================================================");
//网络链接的路径---字符串
String url="http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=json&bk_length=600";

//获得json文件的字符串
String json1=Http1.getHttp(url);

//解析数据,把字符串转换为json对象
JSONObject jsonObject=new JSONObject(json1);

//获取(数组类型的数据) json对象通过key值获取value值,返回一个json数组
JSONArray array2=jsonObject.getJSONArray("wapCatalog");

//获得json数组里面的指定位置的数据
System.out.println(array2.get(3));

/**
* ----------5、 org中的拼接字符串的类
*/

//创建拼接字符串的json对象
JSONStringer ss=new JSONStringer();

ss.object();//开v始拼接对象,按照key----value拼接
ss.key("id");
ss.value("1001");
ss.key("name");
ss.value("刘德华");
ss.key("sex");
ss.value("男");
ss.endObject();//结束拼接对象

//拼接数组的 json字符串对象
JSONStringer stringer=new JSONStringer();

stringer.array();//开始拼接数组

stringer.object();//开v始拼接第1个对象,按照key----value拼接
stringer.key("id");
stringer.value("1001");
stringer.key("name");
stringer.value("刘德华");
stringer.key("sex");
stringer.value("男");
stringer.endObject();//结束拼接对象

stringer.object();//开v始拼接第2个对象,按照key----value拼接
stringer.key("id");
stringer.value("1002");
stringer.key("name");
stringer.value("马德华");
stringer.key("sex");
stringer.value("男");
stringer.endObject();//结束拼接对象

stringer.endArray();//结束拼接数组

System.out.println(stringer.toString());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA json org 网络