数据存储(三)--JSON数据处理

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

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()也是将要获取的键的值转换为指定的类型,无法转换或没有值时返回用户提供或这默认提供的值

时间: 2024-10-05 04:01:37

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

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

将爬取数据存储在JSON文件里并不难,只需修改pipelines文件 直接看代码: 来看下结果: 中文字符恶心的很 之后我会在后卷中做出修改 原文地址:https://www.cnblogs.com/woshiruge/p/8401353.html

(转载)Android数据存储三种方式总结

本文转载自:http://www.cnblogs.com/ITtangtang/p/3920916.html 本文介绍Android平台进行数据存储的三大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 其他: 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符

Python——数据存储:JSON操作

JSON格式的数据格式广泛使用在各种应用中,比XML格式更轻量级,所以现在很多应用都选择JSON格式保存数据,尤其是需要通过网络传输(如socket传输)数据时,这对于移动应用更具有优势.JSON格式数据比XML格式的数据量更小,所以传输速度更快,也更节省数据流量(省钱),因此,在移动APP应用中,几乎都是采用了JSON格式. JSON格式的数据可以保存数组和对象.JSON数组用一对中括号'[  ]'将数据括起来:JSON对象用一对大括号'{  }'将数据括起来.本文介绍JSON字符串与字典的互

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

Android内置了PULL解析器的XPP3实现,以及SAX解析器等,可以直接使用PULL或SAX解析XML,直接把JAVA中进行PULL或SAX解析的代码直接拿来用,遗忘的话,可以参考java拾遗1,2,3关于XML的解析: 如有如下XmlUtils类实现PULL方式解析XML到List和序列化List到XML: Student实体类代码: 1 package cn.csc.bean; 2 3 public class Student { 4 5 private String id; 6 7

python之json数据存储

# 数据存储:json.dump()和json.load() # date:2017-07-17 import json file_name = 'D:/json_file.txt' nums = [3, 4, 5, 7, 1, 9] # nums = {"name": "Mike", "age": 12} with open(file_name, 'w') as file_obj: '''写入json文件''' json.dump(nums,

2017.08.04 Python网络爬虫之Scrapy爬虫实战二 天气预报的数据存储问题

1.数据存储到JSon:程序阅读一般都是使用更方便的Json或者cvs等待格式,继续讲解Scrapy爬虫的保存方式,也就是继续对pipelines.py文件动手脚 (1)创建pipelines2json.py文件: import timeimport jsonimport codecs class WeatherPipeline(object): def process_item(self, item, spider): today=time.strftime('%Y%m%d',time.loc

运维学python之爬虫中级篇(五)数据存储(无数据库版)

本篇主要介绍,爬取html数据后,将html的正文内容存储为json或csv格式. 1 json格式存储 选定要爬取的网站后,我们利用之前学过的内容,如:Beautiful Soup.xpath等方式解析,来获取我们希望得到的内容. 1.1 获取数据 首先使用urllib访问页面https://www.lagou.com/zhaopin/Python/?labelWords=label获取html内容,代码如下: from urllib import request try: url = 'ht

OC语言--数据存储(归档&amp;plist&amp;Json)

1. 数据存储介绍 通常程序在运行过程中,或者程序结束之后,需要保存一些信息,而且需要持久化存储信息:比如登陆信息.视频播放记录.收藏记录等等:我们可以采用以下几种方式对数据进行持久化保存. a.文件 b.plist c.归档 d.NSUserDefaults e.数据库 接下来只介绍Plist和归档这两种方式. 2. 属性列表文件  Plist(Property List) (1)什么是plist文件, plist文件的作用 a. plist文件: property list  属性列表文件,

Unity3d数据存储 PlayerPrefs,XML,Json数据的存储与解析

今天来复习一下数据存储方面的基础知识,Unity3d中常用的数据存储方式有Unity自带的PlayerPrefs, XML文档, Json文档,还有常用的轻量级数据库SQL, 涉及的琐碎知识非常多,在这里自己归纳总结一下,方便日后温故而知新. PlayerPrefs存储数据 PlayerPrefs的存储方式非常简单,但可用性不强,一般只用于调试过程存储少量数据,很少大范围使用 适用设备:Mac OSX, Linux, Windows,Web Players 存储机制:Key-Value (类似于