以前就用过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] 
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;  
    }  
 
最后生成结果为:{"pet":[{"petid":100,"petname":"name1","pettype":"type1"}]}
 
当然,如果我们想生成多个对象,那么只需要多调用几次
 
[java] 
jsonarray.put(jsonObj);//向json数组里面添加pet对象  
这个方法就可以了。
另外对于最外层的object我们可以这样去理解,实际上我们生成的是
 
object{
 
List list;
 
}
 
这样的类型,只不过最外面的object我们看不到而已。
二、解析json串
 
其实解析和生成是相对应的,怎么样生成的,那么就应该怎么样返过来解析
 
传入的json={"pet":[{"petid":100,"petname":"name1","pettype":"type1"}]}
 
[java]  
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;  
    }  
 
三、总结
其实json串的解析是很简单的,当然本文章中我之举了一个最简单的例子。实际应用中传入的json串并不是标准的。有可能是:[{"petid":100,"petname":"name1","pettype":"type1"}]这样的,那么对于这样的很明显这是一个数组形式,那么我们就直接用
 
[java]  
JSONArray jsonArray=new JSONArray(json);  
来解析就可以了。
 
当然具体的形式还有很多种,但是我们只要分清对象和数组这个相互包含的概念,就一定能够解析出来。

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

  1. Android 下使用 JSON 实现 HTTP 请求

    不得不说,JSON 格式的确是非常美妙的,速度快而且简化了很多操作在 Android 下,Android SDK 已经为我们封装好了整个与 JSON 有关的操作,使用非常方便 以下就是一个标准的 JS ...

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

    不得不说,JSON 格式的确是非常美妙的,速度快而且简化了很多操作在 Android 下,Android SDK 已经为我们封装好了整个与 JSON 有关的操作,使用非常方便 以下就是一个标准的 JS ...

  3. Java开发笔记(一百零八)JSON串的定义和解析

    前面提到URL尾巴支持添加请求参数,具体格式形如“参数A名称=A参数值&参数B名称=B参数值”,可是这种格式只能传递简单的键值对信息,不能传递结构化数据,也无法传递数组形式的参数,因而它不适用 ...

  4. JSON数据的生成与解析

    JSON数据的生成与解析.首先先到网上下载一个json jar包,我用的是org.json 演示样例代码: package json; import org.json.JSONArray; impor ...

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

    xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...

  6. Android学习记录(1)—Android中XML文件的序列化生成与解析

    xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...

  7. Android zxing实现二维码生成和解析

    二维码的生成与解析.有多种途径.我选择用大品牌,google老大的zxing. gitHub链接是(我用的3.0.0,已经是nio了) https://github.com/zxing/zxing/t ...

  8. go对json对象的生成和解析

    https://blog.csdn.net/benben_2015/article/details/78917374

  9. json串反转义(消除反斜杠)-- 转载

    JSon串在被串行化后保存在文件中,读取字符串时,是不能直接拿来用JSON.parse()解析为JSON  对象的.因为它是一个字符串,不是一个合法的JSON对象格式.例如下面的JSON串保存在文件中 ...

随机推荐

  1. 新学习的语言Groovy

    什么是 Groovy? Groovy 是 JVM 的一个替代语言 —替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同.在编写新应用 ...

  2. Browser对象

    Window对象即浏览器中打开的窗口,当文档里面有框架(frame或者iframe标签)时,浏览器会为HTML文档创建一个window对象,并为每个框架创建一个额外的window对象. 属性close ...

  3. 动手动脑小程序——TryAndCatch

    import java.util.Scanner; public class Gade { public static void main(String[] args) {  // TODO 自动生成 ...

  4. JQuery知识快览之三—JQuery对象集

    本文讲述JQuery对象集的各相关知识 获取JQuery对象集 JQuery对象,和DOM对象是两个不同的东西,JQuery对象可以是DOM对象的封装,但是JQuery对象不只是DOM对象的封装,它还 ...

  5. Python学习笔记-Day2-Python基础之字典操作

    字典的常用操作包括但不限于以下操作: 字典的字典的索引,新增,删除,循环,长度等等 这里将对列表的内置操作方法进行总结归纳,重点是以示例的方式进行展示. 使用type获取创建对象的类 type(dic ...

  6. firefox 最新版地址栏后没有生成二维码的工具

    下载火狐离线安装包50.0.2版本,安装后找不到这个图标了,搜索下载附加组件管理器cpmanager-1.2.13.xpi,提示没有签名无法安装,最后下载了一个较高版本的cpmanager-1.5.5 ...

  7. SharePoint自动化系列——Add/Remove “Hold” from items

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 问题1: 1.如果SharePoint item被添加了hold,通过UI界面来对SharePoi ...

  8. C#获取当前页面的url

    C#获取当前页面的url string a= Request.ApplicationPath; // / string b = Request.CurrentExecutionFilePath; // ...

  9. Java CSV操作(导出和导入)

    Java CSV操作(导出和导入)  CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件 ...

  10. Linux的启动过程

    Linux的启动过程,也就是Linux的引导流程,这部分主要是理论知识. Linux的开机启动过程 1.1第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...