JSON是一种轻量级的数据交换格式,具有良好的可读和便于高速编写的特性,从而能够在不同平台间进行数据交换。JSON採用兼容性非常高的文本格式,同一时候也具备类似于C语言体系的行为。JSON能够将Java对象转成json格式的字符串,能够将json字符串转换成Java。比XML更轻量级,Json使用起来比較轻便和简单。JSON数据格式,在Android中被广泛运用于client和server通信,在网络传输数据与解析时非常方便。



JSONObject--这是系统中有关JSON定义的基本单元,其包括一对儿(Key/Value)数值。

JSONArray--它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(比如:[value1,value2,value3]

JSONStringer--这个类能够帮助高速和便捷的创建JSONtext。其最大的长处在于能够降低因为格式的错误导致程序异常,引用这个类能够自己主动严格依照JSON语法规则(syntaxrules)创建JSON text。每一个JSONStringer实体仅仅能相应创建一个JSON text。

JSONTokener--json解析类

JSONException--json中用到的异常

以下以数据存储(二)中的Book对象用Json格式转为String

public static String ObjectToJsonString(List<Book> books) throws JSONException
{
JSONStringer stringer = new JSONStringer();
stringer.object();
stringer.key("books");
stringer.array();
for(int i=0;i<books.size();i++)
{
stringer.object();
stringer.key("book:name").value(books.get(i).getName());
stringer.key("book:id").value(books.get(i).getId());
stringer.key("book:price").value(books.get(i).getPrice());
stringer.key("book:publisher").value(books.get(i).getPublisher());
stringer.key("book:count").value(books.get(i).getCount());
stringer.endObject();
}
stringer.endArray();
stringer.endObject();
return stringer.toString();
}

String 转为Book对象

public static List<Book> jsonStringToObject(String str) throws JSONException
{
List<Book> books = new ArrayList<Book>();
JSONTokener jsonTokener = new JSONTokener(str);
JSONObject jsonObject = (JSONObject) jsonTokener.nextValue();
JSONArray array =jsonObject.getJSONArray("books");
for(int i =0;i<array.length();i++)
{
Book book = new Book();
JSONObject temp = ((JSONObject) array.get(i));
book.setName(temp.getString("book:name"));
book.setId(temp.getString("book:id"));
book.setPrice(temp.getString("book:price"));
book.setPublisher(temp.getString("book:publisher"));
book.setCount(temp.optInt("book:count"));
books.add(book);
}
return books;
}

注:

getXXX()能够将要获取的键的值转换为指定的类型,假设无法转换或没有值则抛出JSONException 

optXXX()也是将要获取的键的值转换为指定的类型,无法转换或没有值时返回用户提供或这默认提供的值

数据存储(三)--JSON数据处理的更多相关文章

  1. python3下scrapy爬虫(第九卷:scrapy数据存储进JSON文件)

    将爬取数据存储在JSON文件里并不难,只需修改pipelines文件 直接看代码: 来看下结果: 中文字符恶心的很 之后我会在后卷中做出修改

  2. Android开发手记(18) 数据存储三 SQLite存储数据

    Android为数据存储提供了五种方式: 1.SharedPreferences 2.文件存储 3.SQLite数据库 4.ContentProvider 5.网络存储 SQLite 是以嵌入式为目的 ...

  3. Python中如何将数据存储为json格式的文件

    一.基于json模块的存储.读取数据 names_writer.py import json names = ['joker','joe','nacy','timi'] filename='names ...

  4. 数据存储之json文件处理和csv文件处理

    什么是json: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集,采用 ...

  5. Python中如何将数据存储为json格式的文件(续)

    将上一篇中的例子,修改一下,将两个程序合二为一,如果存储了用户喜欢的水果就显示它,否则提示用户输入他喜欢的水果并将其存储到文件中. favorite.py import json filename = ...

  6. android菜鸟学习笔记19----Android数据存储(三)XML文件的解析及序列化

    Android内置了PULL解析器的XPP3实现,以及SAX解析器等,可以直接使用PULL或SAX解析XML,直接把JAVA中进行PULL或SAX解析的代码直接拿来用,遗忘的话,可以参考java拾遗1 ...

  7. python之json数据存储

    # 数据存储:json.dump()和json.load() # date:2017-07-17 import json file_name = 'D:/json_file.txt' nums = [ ...

  8. python数据存储--JSON

    HTML正文存储为两种格式:JSON和CSV. 存储为JSON: 首先利用Requests访问http://seputu.com获取HTML文档: #!coding:utf-8 import requ ...

  9. localStorage和sessionStorage数据存储

    var arr=[]; for(var i=0;i<4;i++){ arr[i]=i+i; } console.log(arr.toString()); //将json数据转化为字符串 var ...

随机推荐

  1. HTML5 Audio时代的MIDI音乐文件播放

    大家都知道,HTML5 Audio标签能够支持wav, webm, mp3, ogg, acc等格式,但是有个很重要的音乐文件格式midi(扩展名mid)却在各大浏览器中都没有内置的支持,因为mid文 ...

  2. poj 1940 Wine Trading in Gergovia_贪心

    在一条街上有许多房屋,每间屋子里都住着人,并且都是做葡萄酒生意的商人,他们每天都要决定买卖多少瓶葡萄酒.有趣的地方是,供需总是完美地一致.商人总是能买到自己需要的葡萄酒,并且,他们从来不介意是从哪个商 ...

  3. 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)

    第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...

  4. #include <bitset>

    1 none();测试是否有越位 2 reset();全部清零 3 set(7, 0);把第7个字符改成0,操作二进制位 4 to_string();转换为字符串 5 to_ulong();转换为无符 ...

  5. 【Android Training UI】创建自定义Views(Lesson 2 - 自定义Drawing)

    发布在我的网站:http://kesenhoo.github.io/blog/2013/06/30/android-training-ui-creating-custom-views-lesson-2 ...

  6. Codeforces 433 C. Ryouko&#39;s Memory Note

    C. Ryouko's Memory Note time limit per test 1 second memory limit per test 256 megabytes input stand ...

  7. java的静态代理

    解决这个问题:在多个模块要插入一段功能,比方,在不同业务处理模块中,都须要检查用户是否登录,假设不使用代理的话,每添加一个模块,就须要添加非常多代码. 比方,除了推断是否登录,假设还须要添加一个记录日 ...

  8. JqueryUI-1

    本文在于巩固基础 学习网址:http://jqueryui.com/ 基本概念:jQuery UI[是以 jQuery 为基础的开源 JavaScript 网页用户界面代码库.包含底层用户交互.动画. ...

  9. (八)Android广播接收器BroadcastReceiver

    一.使用Broadcast Reciver 1.右击java文件夹,new->other->Broadcast Receiver后会在AndroidManifest.xml文件中生成一个r ...

  10. 机器学习(Machine Learning)

    从wiki开始:http://en.wikipedia.org/wiki/Machine_learning 今天看机器学习相关的文章, 了解了一下opencv中机器学习功能比较多了 (http://d ...