深度剖析 Android 数据库之 ON 使用方法 (android 数据库 json)

在 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的问题

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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 深度剖析 Android 数据库之 ON 使用方法 (android 数据库 json)