在 Android 应用开发中,使用数据库对数据进行存储和操作是非常常见的。而 ON,作为一种轻量级数据交换格式,也被广泛用于数据传输和存储。本文将深入剖析 Android 数据库中使用 ON 数据的方法。
一、什么是 ON
ON(JavaScript Object Notation)是一种轻量级的数据交换格式,属于 JavaScript 语言的子集,于 2023 年被 Douglas Crockford 提出。ON 可以表示数字、布尔、字符串、对象、数组等基本类型数据,也可以嵌套表示复杂数据结构,具有易读、易解析、易于跨平台等优点。
二、在 Android 中使用 ON
Android 中有两种主要方式使用 ON 数据:一种是通过 ONObject 和 ONArray 对象直接解析 ON 数据;另一种是在数据库中使用 TEXT 类型字段存储 ON 数据,方便后续的读取和操作。
1.解析 ON 数据
ONObject 和 ONArray 是 Android 平台提供的两个常用 ON 解析器类。ONObject 表示 ON 对象,可以通过 get()/getString()/getBoolean() 等方法获取属性值,也可以通过 put() 方法向对象中添加属性;ONArray 表示 ON 数组,可以通过 get()/getInt()/getString() 等方法获取数组元素值。
示例代码:
“`java
// 解析 ON 字符串
String jsonString = “{\”name\”:\”Tom\”,\”age\”:20,\”score\”:[80, 90, 95]}”;
ONObject json = new ONObject(jsonString);
String name = json.getString(“name”); // 获取属性值
int age = json.getInt(“age”);
ONArray scoreArray = json.getONArray(“score”);
int firstScore = scoreArray.getInt(0); // 获取数组元素值
// 构建 ON 对象
ONObject newJson = new ONObject();
newJson.put(“name”, “Tom”);
newJson.put(“age”, 20);
ONArray scoreArray = new ONArray();
scoreArray.put(80);
scoreArray.put(90);
scoreArray.put(95);
newJson.put(“score”, scoreArray);
String newJsonString = newJson.toString(); // “{\”name\”:\”Tom\”,\”age\”:20,\”score\”:[80,90,95]}”
“`
2.存储 ON 数据
在 Android 应用的开发中,我们常常需要将一些动态变化的数据存储到本地,以便下次启动应用时重新读取。针对这种情况,我们可以通过将 ON 数据存储到数据库 TEXT 类型字段中实现数据的持久化。
示例代码:
“`java
// 创建数据库表
db.execSQL(“CREATE TABLE IF NOT EXISTS person(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, address TEXT)”);
// 将 ON 数据插入到数据库中
String jsonStr = “{\”name\”:\”Tom\”,\”address\”:\”New York\”}”;
ContentValues cv = new ContentValues();
cv.put(“name”, “Tom”);
cv.put(“address”, jsonStr);
db.insert(“person”, null, cv);
// 从数据库中读取 ON 数据
Cursor cursor = db.query(“person”, null, null, null, null, null, null);
if (cursor.moveToNext()) {
String json = cursor.getString(cursor.getColumnIndex(“address”));
ONObject jsonObject = new ONObject(json);
String name = jsonObject.getString(“name”);
String address = jsonObject.getString(“address”);
}
“`
三、ON 使用注意事项
1.ON 数据的格式应该保证正确,否则可能会导致解析失败或者数据存储不完整。
2.ON 数据的字段名和类型应该与数据库表的列名和类型一一对应,否则可能会导致数据写入或读取出错。
3.ON 数据的大小应该根据实际需要进行控制,避免存储过大的 ON 数据造成数据库性能下降或者存储失败的情况。
四、结论
本文深入剖析了 Android 中使用 ON 的方法,包括 ON 数据的解析和存储。对于需要频繁读取或者需要支持数据持久化的数据来说,使用 ON 数据存储方式是非常便捷和实用的。同时,使用 ON 数据也需要注意数据格式、映射关系和数据大小等问题,以确保数据的完整性和性能的可靠性。
相关问题拓展阅读:
- 求助android解析ON的问题
- android json解析三种方式哪种效率更高
求助android解析ON的问题
key是String类铅滚型的,比如 “userId”,String类型的value要用双引号,int类型什么都不用,如:
{
“T1”:
{“BU_ID”:63,“BU_NAME”:“testBU”
{“BU_ID”槐戚余:61,“BU_NAME”仔歼:“Sunford”},
{“BU_ID”:62,“BU_NAME”:“ZXHTsss”},
{“BU_ID”:42,“BU_NAME”:“Conti1”},
{“BU_ID”:43,“BU_NAME”:“NewBU”}
>
}
android Json接收是采用的(key,value)这样悉困肆形式,所以你传输或者是接收的时候也要这种格式
{“尺贺BU_ID”:61,”BU_NAME”:”Sunford”},
{“BU_ID”:62,”BU_NAME”:”ZXHTsss”},
{“BU_ID”:42,”BU_NAME”:”Conti1″},
{“BU_ID”:43,”BU_NAME”:”NewBU”}>
String str=”你接收的字符串”
JsonArray arry=new JsonArray( str);
然后在睁轿一个个的遍历出来
for(int i=0;i
JsonObject obj=new JsonObject();
obj.getString(“BU_ID”);/ obj.getInt(“BU_ID”)
obj.getString(“BU_NAME”);
}
这是一个json格式验证御卖的链接,可以验证凳拆激自己写的json格式是否正确枣袜
换成这样格启链卜式就对了:
{
‘T1’:
{
‘BU_ID’: ’63’,
‘BU_NAME’: ‘testBU’
}, {
‘BU_ID’: ’61’,
‘BU_NAME’: ‘Sunford’
}, {
‘BU_ID’: ’62’,
‘悄穗BU_NAME’: ‘ZXHTsss’
}, {
‘BU_ID’: ’42’,
‘BU_NAME’: ‘Conti1’
}, {
‘BU_ID’: ’43’,
‘唤差BU_NAME’: ‘NewBU’
}
>
}
android json解析三种方式哪种效率更高
用org.json以及谷歌提供gson来解析json数据的方式更好一些。
安卓下通常采用以下几种方式解析json数据:
1、org.json包(已经集成到android.jar中了)
2、google提供的gson库
3、阿里巴巴的fastjson库
4、json-lib
以Google出品的Gson为例,具体步骤为:
1、首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI:
google-gson-1.7.1-release.zip 把gson-1.7.jar copy到libs(项目根目录新建一个libs文件夹)中。 可以使用以下两种方法解析ON数据,通过获取JsonReader对象解析ON数据。
代码如下:
String jsonData = “”;
try{
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();
while(reader.hasNext()){
reader.beginObject();
while(reader.hasNext()){
String tagName = reader.nextName();
if(tagName.equals(“username”)){
System.out.println(reader.nextString());
}
else if(tagName.equals(“userId”)){
System.out.println(reader.nextString());
}
}
reader.endObject();
}
reader.endArray();
}
catch(Exception e){
e.printStackTrace();
}
2、使用Gson对象获取User对象数据进行相应的操作:
代码如下:
Type listType = new TypeToken>(){}.getType();
Gson gson = new Gson();
LinkedList users = gson.fromJson(jsonData, listType);
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user = (User) iterator.next();
System.out.println(user.getUsername());
System.out.println(user.getUserId());
}
3、如果要处理的ON字符串只包含一个ON对象,则可以直接使用fromJson获取一个User对象:
代码如下:
String jsonData = “{\”username\”:\”arthinking\”,\”userId\”:001}”;
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.println(user.getUsername());
System.out.println(user.getUserId());
一、什么是ON?
ON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
ON就是一串字符串 只不过元素会使用特定的符号标注。
{} 双括号表示对象
中括号表示数组
”” 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 {“name”: “Michael”} 可以理解为是一个包含name为Michael的对象
而就表示包含两个对象的数组
当然了,你也可以使用{“name”:}来简化上面一部,这是一个拥有一个name数组的对象
二、ON解析之传统的ON解析
1、生成On字符串
public static String createJsonString(String key, Object value) {
ONObject jsonObject = new ONObject();
jsonObject.put(key, value);
return jsonObject.toString();
}
2、解析ON字符串
分为以下三种情况,一个JavaBean,一个List数组,一个嵌套Map的List数组:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.json.ONArray;
import org.json.ONObject;
import com.android.myjson.domain.Person;
/**
* 完成对json数据的解析
*
*/
public class JsonTools {
public static Person getPerson(String key, String jsonString) {
Person person = new Person();
try {
ONObject jsonObject = new ONObject(jsonString);
ONObject personObject = jsonObject.getONObject(“person”);
person.setId(personObject.getInt(“id”));
person.setName(personObject.getString(“name”));
person.setAddress(personObject.getString(“address”));
} catch (Exception e) {
// TODO: handle exception
}
return person;
}
public static List getPersons(String key, String jsonString) {
List list = new ArrayList();
try {
ONObject jsonObject = new ONObject(jsonString);
// 返回json的数组
ONArray jsonArray = jsonObject.getONArray(key);
for (int i = 0; i listKeyMaps(String key,
String jsonString) {
List> list = new ArrayList>();
try {
ONObject jsonObject = new ONObject(jsonString);
ONArray jsonArray = jsonObject.getONArray(key);
for (int i = 0; i ,>三、ON解析之GSON
1、生成ON字符串
import com.google.gson.Gson;
public class JsonUtils {
public static String createJsonObject(Object obj) {
Gson gson = new Gson();
String str = gson.toJson(obj);
return str;
}
}二、解析ON
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
;
public class GsonTools {
public GsonTools() {
// TODO Auto-generated constructor stub
}
/**
* @param
* @param jsonString
* @param cls
* @return
*/
public static T getPerson(String jsonString, Class cls) {
T t = null;
try {
Gson gson = new Gson();
t = gson.fromJson(jsonString, cls);
} catch (Exception e) {
// TODO: handle exception
}
return t;
}
/**
* 使用Gson进行解析 List
*
* @param
* @param jsonString
* @param cls
* @return
*/
public static List getPersons(String jsonString, Class cls) {
List list = new ArrayList();
try {
Gson gson = new Gson();
list = gson.fromJson(jsonString, new TypeToken>() {
}.getType());
} catch (Exception e) {
}
return list;
}
/**
* @param jsonString
* @return
*/
public static List getList(String jsonString) {
List list = new ArrayList();
try {
Gson gson = new Gson();
list = gson.fromJson(jsonString, new TypeToken>() {
}.getType());
} catch (Exception e) {
// TODO: handle exception
}
return list;
}
public static List> listKeyMaps(String jsonString) {
List> list = new ArrayList>();
try {
Gson gson = new Gson();
list = gson.fromJson(jsonString,
new TypeToken>>() {
}.getType());
} catch (Exception e) {
// TODO: handle exception
}
return list;
}
}
三、ON解析之FastON
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.ON;
import com.alibaba.fastjson.TypeReference;
public class JsonTool {
public static T getPerson(String jsonstring, Class cls) {
T t = null;
try {
t = ON.parseObject(jsonstring, cls);
} catch (Exception e) {
// TODO: handle exception
}
return t;
}
public static List getPersonList(String jsonstring, Class cls) {
List list = new ArrayList();
try {
list = ON.parseArray(jsonstring, cls);
} catch (Exception e) {
// TODO: handle exception
}
return list;
}
public static List> getPersonListMap1(
String jsonstring) {
List> list = new ArrayList>();
try {
list = ON.parseObject(jsonstring,
new TypeReference>>() {
}.getType());
} catch (Exception e) {
// TODO: handle exception
}
return list;
}
}
总结:
ON对于移动设备来说,尤其对于网络环境较差和流量限制的情况下,相对于XML格式的数据传输会更节省流量,传输效率更高。在这三种解析方式中FastJson是效率更高的,推荐使用。
关于android 数据库 json的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。