新聞中心
在 Android 應(yīng)用開發(fā)中,使用數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行存儲和操作是非常常見的。而 ON,作為一種輕量級數(shù)據(jù)交換格式,也被廣泛用于數(shù)據(jù)傳輸和存儲。本文將深入剖析 Android 數(shù)據(jù)庫中使用 ON 數(shù)據(jù)的方法。

在岳塘等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計制作按需網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,岳塘網(wǎng)站建設(shè)費用合理。
一、什么是 ON
ON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,屬于 JavaScript 語言的子集,于 2023 年被 Douglas Crockford 提出。ON 可以表示數(shù)字、布爾、字符串、對象、數(shù)組等基本類型數(shù)據(jù),也可以嵌套表示復(fù)雜數(shù)據(jù)結(jié)構(gòu),具有易讀、易解析、易于跨平臺等優(yōu)點。
二、在 Android 中使用 ON
Android 中有兩種主要方式使用 ON 數(shù)據(jù):一種是通過 ONObject 和 ONArray 對象直接解析 ON 數(shù)據(jù);另一種是在數(shù)據(jù)庫中使用 TEXT 類型字段存儲 ON 數(shù)據(jù),方便后續(xù)的讀取和操作。
1.解析 ON 數(shù)據(jù)
ONObject 和 ONArray 是 Android 平臺提供的兩個常用 ON 解析器類。ONObject 表示 ON 對象,可以通過 get()/getString()/getBoolean() 等方法獲取屬性值,也可以通過 put() 方法向?qū)ο笾刑砑訉傩裕籓NArray 表示 ON 數(shù)組,可以通過 get()/getInt()/getString() 等方法獲取數(shù)組元素值。
示例代碼:
“`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); // 獲取數(shù)組元素值
// 構(gòu)建 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 數(shù)據(jù)
在 Android 應(yīng)用的開發(fā)中,我們常常需要將一些動態(tài)變化的數(shù)據(jù)存儲到本地,以便下次啟動應(yīng)用時重新讀取。針對這種情況,我們可以通過將 ON 數(shù)據(jù)存儲到數(shù)據(jù)庫 TEXT 類型字段中實現(xiàn)數(shù)據(jù)的持久化。
示例代碼:
“`java
// 創(chuàng)建數(shù)據(jù)庫表
db.execSQL(“CREATE TABLE IF NOT EXISTS person(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, address TEXT)”);
// 將 ON 數(shù)據(jù)插入到數(shù)據(jù)庫中
String jsonStr = “{\”name\”:\”Tom\”,\”address\”:\”New York\”}”;
ContentValues cv = new ContentValues();
cv.put(“name”, “Tom”);
cv.put(“address”, jsonStr);
db.insert(“person”, null, cv);
// 從數(shù)據(jù)庫中讀取 ON 數(shù)據(jù)
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 數(shù)據(jù)的格式應(yīng)該保證正確,否則可能會導(dǎo)致解析失敗或者數(shù)據(jù)存儲不完整。
2.ON 數(shù)據(jù)的字段名和類型應(yīng)該與數(shù)據(jù)庫表的列名和類型一一對應(yīng),否則可能會導(dǎo)致數(shù)據(jù)寫入或讀取出錯。
3.ON 數(shù)據(jù)的大小應(yīng)該根據(jù)實際需要進(jìn)行控制,避免存儲過大的 ON 數(shù)據(jù)造成數(shù)據(jù)庫性能下降或者存儲失敗的情況。
四、結(jié)論
本文深入剖析了 Android 中使用 ON 的方法,包括 ON 數(shù)據(jù)的解析和存儲。對于需要頻繁讀取或者需要支持?jǐn)?shù)據(jù)持久化的數(shù)據(jù)來說,使用 ON 數(shù)據(jù)存儲方式是非常便捷和實用的。同時,使用 ON 數(shù)據(jù)也需要注意數(shù)據(jù)格式、映射關(guān)系和數(shù)據(jù)大小等問題,以確保數(shù)據(jù)的完整性和性能的可靠性。
相關(guān)問題拓展閱讀:
- 求助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數(shù)據(jù)的方式更好一些。
安卓下通常采用以下幾種方式解析json數(shù)據(jù):
1、org.json包(已經(jīng)集成到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數(shù)據(jù),通過獲取JsonReader對象解析ON數(shù)據(jù)。
代碼如下:
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對象數(shù)據(jù)進(jìn)行相應(yīng)的操作:
代碼如下:
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的數(shù)據(jù)結(jié)構(gòu),和xml相比,它更小巧但描述能力卻不差,由于它的小巧所以網(wǎng)絡(luò)傳輸數(shù)據(jù)將減少更多流量從而加快速度。
ON就是一串字符串 只不過元素會使用特定的符號標(biāo)注。
{} 雙括號表示對象
中括號表示數(shù)組
”” 雙引號內(nèi)是屬性或值
: 冒號表示后者是前者的值(這個值可以是字符串、數(shù)字、也可以是另一個數(shù)組或?qū)ο?
所以 {“name”: “Michael”} 可以理解為是一個包含name為Michael的對象
而就表示包含兩個對象的數(shù)組
當(dāng)然了,你也可以使用{“name”:}來簡化上面一部,這是一個擁有一個name數(shù)組的對象
二、ON解析之傳統(tǒng)的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數(shù)組,一個嵌套Map的List數(shù)組:
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數(shù)據(jù)的解析
*
*/
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的數(shù)組
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進(jìn)行解析 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;
}
}
總結(jié):
ON對于移動設(shè)備來說,尤其對于網(wǎng)絡(luò)環(huán)境較差和流量限制的情況下,相對于XML格式的數(shù)據(jù)傳輸會更節(jié)省流量,傳輸效率更高。在這三種解析方式中FastJson是效率更高的,推薦使用。
關(guān)于android 數(shù)據(jù)庫 json的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
當(dāng)前文章:深度剖析Android數(shù)據(jù)庫之ON使用方法(android數(shù)據(jù)庫json)
本文路徑:http://m.fisionsoft.com.cn/article/dpogdps.html


咨詢
建站咨詢
