网络编程-json数据的解析
来源:互联网 发布:江苏网络电视台回看 编辑:程序博客网 时间:2024/04/29 12:59
数据传输类型
姓名:张三、年龄:20、地址:[城市:北京、街道:长安街]
- 1. xml数据类型
<person><name>张三</name><age>20</age><adress> <city>北京</city> <street>长安街</street></adress></person>
- 2. json数据类型(重要)
相比xml数据类型,json数据需要的字节数更少,在数据传输过程中,即需要更少的流量,所以json数据的使用更广泛。
{ "name": "张三", "age": 20, "address":{ "city": "北京", "street": "长安街" }}
- 3. 解析json数据
public static void main(String[] args) { File file = new File("C:/Users/Administrator/Desktop/课堂图片/Person.json"); String strJson = getText(file);// 读取本地json数据 // json解析,并生成对象 Person p = parseJson(strJson); System.out.println(p);}/*** 解析String里的json数据并返回一个Person对象*/public static Person parseJson(String json){ Person person = null; try { JSONObject jsonObject = new JSONObject(json); // 通过key取value String name = jsonObject.getString("name"); int age = jsonObject.getInt("age"); // 获取address对应的json对象 JSONObject jsonAdress = jsonObject.getJSONObject("address"); // 通过jsonAddress取得city和street String city = jsonAddress.getString("city"); String street = jsonAddress.getString("street"); Address address = new Address(city,street); // 赋值给实体类的属性 person = new Person(); person.setName(name); person.setAge(age); person.setAddress(address); } catch (JSONException e) { e.printStackTrace(); } return person;}/*** 将本地json文件内的数据解析为字符串*/public static String getText(File file){ BufferedReader br = null; StringBuilder builder = null; try { br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "utf-8")); String str = null; builder = new StringBuilder(); while((str=br.readLine())!=null){ builder.append(str); builder.append("\r\n"); } } catch (IOException e) { e.printStackTrace(); } finally{ try { br.close(); } catch (IOException e) { e.printStackTrace(); } } return builder.toString();}
- 4. 解析复杂的json数据
[{ "name": "张三", "age": 20, "address": [ { "city": "北京", "street": "长安街" }, { "city": "武汉", "street": "长安街" }, { "city": "成都", "street": "成龙大道" } ]},{ "name": "李四", "age": 22, "address": [ { "city": "北京", "street": "长安街" }, { "city": "武汉", "street": "长安街" }, { "city": "成都", "street": "成龙大道" } ]},{ "name": "王五", "age": 23, "address": [ { "city": "北京", "street": "长安街" }, { "city": "武汉", "street": "长安街" }, { "city": "成都", "street": "成龙大道" } ]}]
public static void main(String[] args) { File file = new File("C:/Users/Administrator/Desktop/课堂图片/Person.json"); String strJson = IOUtils.getText(file); // json解析,并生成对象 List<Person> list = parseJsonArray(strJson); for (Person person : list) { System.out.println(person); }}public static List<Person> parseJsonArray(String json){ List<Person> list = null; try { JSONArray jsonArray = new JSONArray(json); list = new ArrayList<Person>(); for(int i=0;i<jsonArray.length();i++){ JSONObject jsonObject = (JSONObject) jsonArray.get(i); Person p = parseJson(jsonObject.toString()); list.add(p); } } catch (JSONException e) { e.printStackTrace(); } return list;}public static Person parseJson(String json){ Person person = null; try { JSONObject jsonObject = new JSONObject(json); // 通过key取value String name = jsonObject.getString("name"); int age = jsonObject.getInt("age"); // 获取address得到3个地址json数据组成的数组 JSONArray jsonArray = jsonObject.getJSONArray("address"); // 用于存放3个地址 List<Address> list = new ArrayList<Address>(); for(int i=0;i<jsonArray.length();i++){ JSONObject jsonAddress = (JSONObject) jsonArray.get(i); String city = jsonAddress.getString("city"); String street = jsonAddress.getString("street"); Address address = new Address(city,street); list.add(address); } // 赋值给实体类的属性 person = new Person(); person.setName(name); person.setAge(age); person.setAddress(list); } catch (JSONException e) { e.printStackTrace(); } return person;}
- 5. 官方以外的jar包称为外包,用外包简化我们的解析代码
Google提供的外包:Gson
import com.google.gson.Gson;public static void main(String[] args) { File file = new File("C:/Users/Administrator/Desktop/课堂图片/Person.json"); String strJson = IOUtils.getText(file); System.out.println(strJson); Gson gson = new Gson(); // 通过gson,完成json数据的解析 Person p = gson.fromJson(strJson, Person.class); System.out.println(p); // 完成对象转json的功能 String str = gson.toJson(p); System.out.println(str);}
网络接口编程
接口链接网站:http://apistore.baidu.com/
手机号码归属地
其中ObjectMapper mapper = new ObjectMapper();使用了另一种第三方jar包(jackson)。
0 0
- 网络编程-json数据的解析
- 网络编程--JSON数据解析
- 网络编程:Json解析
- Android之网络编程(四)解析 JSON 格式数据
- iOS网络编程4--使用SwiftyJSON解析JSON数据
- android网络编程之json传输数据以及解析方式
- Android网络编程<我所理解的XML和JSON数据解析>
- Android网络与数据存储——网络编程数据处理(网络请求解析Json,解析xml)
- UI-json解析网络数据
- Json解析网络请求数据
- 网络下的数据传输之Json数据的解析
- iOS开发网络篇—JSON数据的解析
- iOS开发网络篇—JSON数据的解析
- iOS开发网络篇—JSON数据的解析
- android如何解析网络上的json数据。
- Android网络数据JSON和XML的解析
- Java网络爬虫(七)--JSON数据的解析
- Android网络传输数据Json解析的基本认识
- 查找字符串中出现一次且第一次出现的字符
- HDOJ 4883 TIANKENG’s restaurant
- 文件的搜寻
- 欢迎使用CSDN-markdown编辑器
- Liunx解压时出现错误: tar: 跳转到下一个头tar
- 网络编程-json数据的解析
- Error 3 error C4996: 'cv::flann::Index_<T>': was declared deprecated c:\open
- java中日期的格式化 时间类
- Linux下I/O多路转接之select --fd_set
- RxJava操作符(2)-变换
- 求所有前缀-后缀字符串相等的长度(kmp算法中的nxet数组)
- HDU 5813 Elegant Construction (贪心)
- validates不要校验布尔型 presence: true
- 【计算机组成原理】流水线处理器