数据存储(三)--JSON数据处理
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()也是将要获取的键的值转换为指定的类型,无法转换或没有值时返回用户提供或这默认提供的值
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。