数据存储(三)--JSON数据处理
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数据处理的更多相关文章
- python3下scrapy爬虫(第九卷:scrapy数据存储进JSON文件)
将爬取数据存储在JSON文件里并不难,只需修改pipelines文件 直接看代码: 来看下结果: 中文字符恶心的很 之后我会在后卷中做出修改
- Android开发手记(18) 数据存储三 SQLite存储数据
Android为数据存储提供了五种方式: 1.SharedPreferences 2.文件存储 3.SQLite数据库 4.ContentProvider 5.网络存储 SQLite 是以嵌入式为目的 ...
- Python中如何将数据存储为json格式的文件
一.基于json模块的存储.读取数据 names_writer.py import json names = ['joker','joe','nacy','timi'] filename='names ...
- 数据存储之json文件处理和csv文件处理
什么是json: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集,采用 ...
- Python中如何将数据存储为json格式的文件(续)
将上一篇中的例子,修改一下,将两个程序合二为一,如果存储了用户喜欢的水果就显示它,否则提示用户输入他喜欢的水果并将其存储到文件中. favorite.py import json filename = ...
- android菜鸟学习笔记19----Android数据存储(三)XML文件的解析及序列化
Android内置了PULL解析器的XPP3实现,以及SAX解析器等,可以直接使用PULL或SAX解析XML,直接把JAVA中进行PULL或SAX解析的代码直接拿来用,遗忘的话,可以参考java拾遗1 ...
- python之json数据存储
# 数据存储:json.dump()和json.load() # date:2017-07-17 import json file_name = 'D:/json_file.txt' nums = [ ...
- python数据存储--JSON
HTML正文存储为两种格式:JSON和CSV. 存储为JSON: 首先利用Requests访问http://seputu.com获取HTML文档: #!coding:utf-8 import requ ...
- localStorage和sessionStorage数据存储
var arr=[]; for(var i=0;i<4;i++){ arr[i]=i+i; } console.log(arr.toString()); //将json数据转化为字符串 var ...
随机推荐
- Dependency Walker使用说明
Dependency Walker使用说明 标签: dllexewindowsvbqq工具 2010-03-29 11:10 25175人阅读 评论(22) 收藏 举报 分类: 基本常识(45) ...
- thinkPHP模板引擎案例
1.if <if condition="$vo.business eq LS"> 零售 <elseif condition="$vo.business ...
- cf466A Cheap Travel
A. Cheap Travel time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- 数据挖掘之分类算法---knn算法(有matlab例子)
knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法.注意,不是聚类算法.所以这种分类算法 必然包括了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒 ...
- python 重要模块
1,使用字典的特殊字符串替换,基于字典的字符串格式化
- Linux dirname、basename 指令
http://blog.sina.com.cn/s/blog_9d074aae01013ctk.html 一.dirname指令 1.功能:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然 ...
- jQuery 遍历 - siblings() 方法
本文来自:http://www.w3school.com.cn/jquery/traversing_siblings.asp jQuery 遍历参考手册 实例 查找每个 p 元素的所有类名为 &quo ...
- Time.deltaTime和Time.realtimeSinceStartup
private float f = 0f;void Update () { f += Time.deltaTime; Debug.LogError ("Time.delt ...
- 我是如何开发一个连锁企业的信息系统的,NO.1
我是如何开发一个连锁企业的信息系统的,NO.1 连锁企业的信息系统的开发,一半要经历系统分析.系统设计.系统实施.系统评价和系统维护等五个阶段, 而在每个实施阶段中又具体划分出许多阶段性目标和实施步骤 ...
- UIPageViewController-浅析
一.UIPageViewController概念 控件为我们提供了一种像翻书效果的一种控件.我们可以通过使用UIPageViewController控件,来完成类似图书一样的翻页控制方式. 二 ...