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. Dependency Walker使用说明

    Dependency Walker使用说明 标签: dllexewindowsvbqq工具 2010-03-29 11:10 25175人阅读 评论(22) 收藏 举报  分类: 基本常识(45)  ...

  2. thinkPHP模板引擎案例

    1.if <if condition="$vo.business eq LS"> 零售 <elseif condition="$vo.business ...

  3. cf466A Cheap Travel

    A. Cheap Travel time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  4. 数据挖掘之分类算法---knn算法(有matlab例子)

    knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法.注意,不是聚类算法.所以这种分类算法 必然包括了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒 ...

  5. python 重要模块

    1,使用字典的特殊字符串替换,基于字典的字符串格式化

  6. Linux dirname、basename 指令

    http://blog.sina.com.cn/s/blog_9d074aae01013ctk.html 一.dirname指令 1.功能:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然 ...

  7. jQuery 遍历 - siblings() 方法

    本文来自:http://www.w3school.com.cn/jquery/traversing_siblings.asp jQuery 遍历参考手册 实例 查找每个 p 元素的所有类名为 &quo ...

  8. Time.deltaTime和Time.realtimeSinceStartup

    private float f = 0f;void Update () {      f += Time.deltaTime;      Debug.LogError ("Time.delt ...

  9. 我是如何开发一个连锁企业的信息系统的,NO.1

    我是如何开发一个连锁企业的信息系统的,NO.1 连锁企业的信息系统的开发,一半要经历系统分析.系统设计.系统实施.系统评价和系统维护等五个阶段, 而在每个实施阶段中又具体划分出许多阶段性目标和实施步骤 ...

  10. UIPageViewController-浅析

    一.UIPageViewController概念   控件为我们提供了一种像翻书效果的一种控件.我们可以通过使用UIPageViewController控件,来完成类似图书一样的翻页控制方式.   二 ...