android下基本json串的生成与解析

以前就用过json串,不过是在java环境下面,如今转移到android环境下,java里面生成解析json串的jar包与android中自带的冲突,所以也只能用安卓自带的。

先前查网上的资料,感觉很多都说的很乱,直接给出了例子,也不解释一下就算完成,他们自己肯定是明白的,但是让读者理解起来肯定有点难度。而且解析的方法很多,而这里,我就介绍一种最原始最简单的吧。希望我拙劣的表达能力不会影响到你们的理解。

首先我们先讲一下json串格式

比如对象pet(宠物)

class pet{

int petid;//编号

String petname;//名称

String pettype;//类型

}

那么对象的json串形式就是

{"pet":[{"petid":1000,"petname":"name1","pettype":"type1"}]}

而如果我们创建多个pet对象,那么字符串形式就为:

{"pet":[{"petid":1000,"petname":"name1","pettype":"type1"},{"petid":1002,"petname":"name2","pettype":"type2"}]}

这里定义的如果是int型,值就不要添加"号,如果String类型或者其他类型,则添加"。

一、生成json串

好了,下面我们来利用android自带的JSONObject来创建一个json字符串。

[java]

<span style="font-size:18px">public String petToJson(Pet pet) {

String jsonresult = "";//定义返回字符串

JSONObject object = new JSONObject();//创建一个总的对象,这个对象对整个json串

try {

JSONArray jsonarray = new JSONArray();//json数组,里面包含的内容为pet的所有对象

JSONObject jsonObj = new JSONObject();//pet对象,json形式

jsonObj.put("petid", pet.getPetid());//向pet对象里面添加值

jsonObj.put("petname", pet.getPetname());

jsonObj.put("pettype", pet.getPettype());

// 把每个数据当作一对象添加到数组里

jsonarray.put(jsonObj);//向json数组里面添加pet对象

object.put("pet", jsonarray);//向总对象里面添加包含pet的数组

jsonresult = object.toString();//生成返回字符串

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

LogI("生成的json串为:"+jsonresult);

return jsonresult;

}</span>

最后生成结果为:{"pet":[{"petid":100,"petname":"name1","pettype":"type1"}]}

当然,如果我们想生成多个对象,那么只需要多调用几次

[java]

<span style="font-size:18px">jsonarray.put(jsonObj);//向json数组里面添加pet对象</span>

这个方法就可以了。

另外对于最外层的object我们可以这样去理解,实际上我们生成的是

object{

List<pet> list;

}

这样的类型,只不过最外面的object我们看不到而已。

二、解析json串

其实解析和生成是相对应的,怎么样生成的,那么就应该怎么样返过来解析

传入的json={"pet":[{"petid":100,"petname":"name1","pettype":"type1"}]}

[java]

<span style="font-size:18px">public Pet jsonToPet(String json){

if(json.startsWith("error")){//这里可以做一下检测,如果不是json格式的就直接返回

return null;

}

Pet pet=new Pet();//准备返回的pet对象

try {

JSONObject jsonObject=new JSONObject(json);//我们需要把json串看成一个大的对象

JSONArray jsonArray=jsonObject.getJSONArray("pet");//这里获取的是装载有所有pet对象的数组

JSONObject jsonpet = jsonArray.getJSONObject(0);//获取这个数组中第一个pet对象

String petid=jsonpet.getString("petid");//获取pet对象的参数

String petname=jsonpet.getString("petname");

String pettype=jsonpet.getString("pettype");

pet.setPetid(petid);//把参数添加到pet对象当中。

pet.setPetid(petname);

pet.setPetid(pettype);

} catch (JSONException e) {

e.printStackTrace();

}

LogI("json To Pet:"+pet.toString());//打印出pet对象参数。

return pet;

}</span>

三、总结

其实json串的解析是很简单的,当然本文章中我之举了一个最简单的例子。实际应用中传入的json串并不是标准的。有可能是:[{"petid":100,"petname":"name1","pettype":"type1"}]这样的,那么对于这样的很明显这是一个数组形式,那么我们就直接用

[java]

<span style="font-size:18px">JSONArray jsonArray=new </span><span style="font-size:18px">JSONArray</span><span style="font-size:18px">(json);</span>

来解析就可以了。

当然具体的形式还有很多种,但是我们只要分清对象和数组这个相互包含的概念,就一定能够解析出来。

转载:http://www.2cto.com/kf/201309/244866.html

android下基本json串的生成与解析,布布扣,bubuko.com

时间: 2024-12-20 16:52:43

android下基本json串的生成与解析的相关文章

Android 下使用 JSON 实现 HTTP 请求,外加几个示例!

不得不说,JSON 格式的确是非常美妙的,速度快而且简化了很多操作在 Android 下,Android SDK 已经为我们封装好了整个与 JSON 有关的操作,使用非常方便 以下就是一个标准的 JSON 请求的实现过程: [java] view plaincopyprint? HttpPost request = new HttpPost(url); // 先封装一个 JSON 对象 JSONObject param = new JSONObject(); param.put("name&qu

JSON数据的生成与解析

JSON数据的生成与解析,首先先到网上下载一个json jar包,我用的是org.json 示例代码: package json; import org.json.JSONArray; import org.json.JSONObject; public class Main { /** * 生成Json数据 */ public static String createJson(){ JSONObject json = new JSONObject(); json.put("classId&qu

Android开发:JSON简介及最全面解析方法(Gson、AS自带org.json、Jackson解析)

前言 今天,我们来介绍现今主流的数据交换格式-JSON! 同样作为主流为数据交换格式-XML,如果有兴趣可以阅读我写的XML及其DOM.SAX.PULL解析方法和对比 目录 JSON简介&解析方法介绍.png 定义 JavaScript Object Notation,JavaScript的对象表示法,是一种轻量级的文本数据交换格式. 作用 用于数据的标记.存储和传输. 特点 轻量级的文本数据交换格式 独立于语言和平台 具有自我描述性 读写速度快,解析简单 语法 JSON值 名称/值 数组 对象

Android中XML文件的序列化生成与解析

首先,我把Person的实体类 package net.loonggg.test; public class Person { private int id; private String age; private String name; private String sex; private String address; public int getId() { return id; } public void setId(int id) { this.id = id; } public

Android学习之Json数据的获取与解析

Android获取json数据的原理,我的理解是:首先通过http协议获取json数据的字符串格式数据,然后再把字符串格式转变成Json对象的数据 首先我先将某个网址path的数据获取到: 1 /** 2 * HttpUtils.java [V 1.0.0] 3 * classes :com.oysd.json.HttpUtils 4 * ouyangshengduo create at 2015-6-24 5 */ 6 package com.oysd.json; 7 8 import jav

Android配置文件分享和JSON数据生成与解析

首先声明,我这里大体是讲的一个关于"Android配置文件分享和JSON数据生成与解析"的整体流程,具体数据库中的数据根据读者自己的项目来安排,如果您看不大懂也请您原谅,毕竟我说了,我只是新手.其实关于数据库中的数据你只需要知道他们都是一个个对象,然后有各自的属性就行了,我们的关键在于JSON数据的生成与解析. 鉴于自己的是个博客新手,感觉自己的博客访问量有些少可能是因为自己确实知识匮乏,毕竟我早就说了,我不适合编程,但是没办法啊,我要去读个文学博士的话,怕是要遭人白眼了,故而以后的事

数据存储-自定义Json串写入文件与XML格式读取数据

数据存储总的来说有三种方式 1>,数据库 2>,文件 3>,网络 在这里我介绍的是Json格式与XML格式的文件存储 先说说常用的文件存储数据的格式 1>,Json格式 2>,XML格式 这俩种格式我觉得区别的话应该是Json适合存储小数据,XML适合存储大数据 在cocos2d-x中,如果我们要用Json首先我们要先导入一个Json库:libjson demo如下: 要添加libjson头文件 创建Json格式的数据: 这里用JSONNode,定义一个父节点n,再定义一个节

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的

Android Json生成及解析实例

JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON Vs XML 1.JSON和XML的数据可读性基本相同 2.JSON和XML同样拥有丰富的解析手段 3.JSON相对于XML来讲,数据的体积小 4.JSON与JavaScript的交互更加方便 5.JSON对数据的