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

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/234104.html<

(0)
管理的头像管理
上一篇2025-04-20 22:40
下一篇 2025-04-20 22:42

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注