用JAVA进行Json数据解析(对象数组的相互嵌套)

这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下!

假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相关工具美化后的结果

{
  "translation": [
    "爱"
  ],
  "basic": {
    "us-phonetic": "l?v",
    "phonetic": "l?v",
    "uk-phonetic": "l?v",
    "explains": [
      "n. 恋爱;亲爱的;酷爱;喜爱的事物",
      "vt. 喜欢;热爱;爱慕",
      "vi. 爱",
      "n. (Love)人名;(英)洛夫"
    ]
  },
  "web": [
    {
      "value": [
        "爱情",
        "爱",
        "爱"
      ],
      "key": "Love"
    },
    {
      "value": [
        "无尽的爱",
        "蓝色生死恋",
        "不了情"
      ],
      "key": "Endless Love"
    },
    {
      "value": [
        "早恋",
        "青春期恋爱",
        "初恋"
      ],
      "key": "puppy love"
    }
  ]
}

我们把数据定义为一个字符串,加入转义字符之后就成了这样,有点乱是吧,所以我们根据上图分析就好啦。

Json数据说白了就是对象和数组的相互嵌套,那么我们开始吧!
  
String st =
"{\"translation\":[\"爱\"],\"basic\":{\"us-phonetic\":\"l?v\",\"phonetic\":\"l?v\",\"uk-phonetic\":\"l?v\",\"explains\":[\"n.
恋爱;亲爱的;酷爱;喜爱的事物\",\"vt. 喜欢;热爱;爱慕\",\"vi. 爱\",\"n.
(Love)人名;(英)洛夫\"]},\"query\":\"love\",\"errorCode\":0,\"web\":[{\"value\":[\"爱情\",\"爱\",\"爱\"],\"key\":\"Love\"},{\"value\":[\"无尽的爱\",\"蓝色生死恋\",\"不了情\"],\"key\":\"Endless
Love\"},{\"value\":[\"早恋\",\"青春期恋爱\",\"初恋\"],\"key\":\"puppy
love\"}]}";

JSONObject str = JSONObject.fromObject(st);                 //json数据的最外层肯定是一个对象,参数为字符串
                                               //对象str又分为3部分:translation,basic,web  
        if(str.has("translation")){        
            JSONArray tr = str.getJSONArray("translation");               //translation是一个json数组
            for(int i = 0 ;i<tr.size();i++){                      //对数组元素进行遍历
                System.out.println(tr.getString(i));              //因为元素的值是String类型的所以忽的值的方法是getString(index)
            }
        }

//basic中有数组也有元素
        if(str.has("basic")){                            
            JSONObject us = str.getJSONObject("basic");               //对元素进行解析,并输出元素的值
            System.out.print("美:[" + us.getString("us-phonetic") + "]\t");    
            
            JSONObject uk = str.getJSONObject("basic");
            System.out.print("英:[" + us.getString("uk-phonetic") + "]\n");
            
            JSONObject basic = str.getJSONObject("basic");              //先获得basic对象
            JSONArray explain = basic.getJSONArray("explains");            //再获得basic对象下的explains数组 
            for(int i = 0;i<explain.size(); i++){                   //对数组元素进行遍历
                System.out.println(explain.getString(i));
            }     
        }
        if(str.has("web")){                               //web是一个数组,每个数组元素又是三个Json对象
            System.out.println("拓展:");                      
            JSONArray web = str.getJSONArray("web");               
            for(int i = 0; i<web.size() ; i++ ){                   //但是对象中又嵌套着数组
                String t = web.getString(i);                   //遍历过程将web数组元素赋给String型变量
                JSONObject we = JSONObject.fromObject(t);             //通过String又得到每个元素的对象
                if(we.has("key")){            
                    System.out.print(we.getString("key")+"\t");        //得到对象中的元素
                }
                if(we.has("value")){                      
                    JSONArray value = we.getJSONArray("value");
                    for(int x = 0 ; x<value.size() ;x++ ){          //遍历对象中嵌套的数组
                        System.out.print(value.getString(x));       //得到数组元素的值
                        if(x<value.size()-1){
                            System.out.print(";");
                        }
                    }
                }
                System.out.println();
            }
        }

到这里就解析完啦!

时间: 2024-10-24 21:16:47

用JAVA进行Json数据解析(对象数组的相互嵌套)的相关文章

JS和JAVA使用JSON方法解析

JS和JAVA使用JSON方法解析 一.JS部分================== 将json字符串转换为json对象的方法.在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键. 例如: JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对象: var str2 = {

最简单简洁高效的Json数据解析

一.无图无真相 二.主要代码 1.导入jar包 拷贝fastjson.jar包到projectlibs包下 2.封装工具类JsonUtil.java package com.example.parsejsondemo; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.List; /**

android开发之JSON数据解析

android开发之JSON数据解析 本博文主要讲述的是使用google的lib库gson解析JSON数据的方法,因为android自带的JSON数据解析器对只可以在android 3.0以上版本才能适用,如果需要使用gson,我们需要在项目中添加gson的lib库文件,然后add path.详细代码如下: MainActivyty.java: package com.example.analysisjson; import android.os.Bundle; import android.a

Android JSON数据解析(GSON方式)

要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Java对象,或是将一个Java对象转换为相应的JSON数据. 1.GSON的两个重要方法 在GSON的API中,提供了两个重要的方法:toJson()和fromJson()方法.其中,toJson()方法用来实现将Java对象转换为相应的JSON数据,fromJson()方法则用来实现将JSON数据转换

iOS之网络数据下载和Json数据解析

iOS之网络数据下载和Json数据解析 简介 在本文中笔者将要给大家介绍iOS中如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据,以及如何显示数据和图片的异步下载显示 涉及到的知识点: 1.NSURLConnection异步下载封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 (1)什么是网络应用? 一般情况下, iPhone的计算机, 照相机不需要从网络上下载数据也能运行, 所以这

JSON数据解析(GSON方式) (转)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 在上一篇博文<Android学习笔记44:JSON数据解析>中,我们使用基本的JSON API完成了在服务器端创建JSON数据,以及在Android客户端对JSON数据进行解析. 其实,要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使

JSON数据解析(转)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android开发中,如何在服务器端创建JSON数据,以及如何在Android客户端对JSON数据进行解析. 1.JSON数据结构 在JSON中有两种数据结构:对象和数组. 1.1对象 在JSON中,一个对象以“{”(左括号)开始,“}”(右括号)结束.每个“名称”后跟一个“:”(冒号),冒号后是该名称的值,多个

ios json数据解析

刚刚下午那会 弄了个 解析 xml  demo的小例子,本想着json也挺复杂 弄还是 不弄,但是简单的看了下 发现挺简单,这个时候就犹豫了,要不写到博客上来 ? 考虑了很久,还是写上来吧,毕竟json用得太多了,而且算是自己的积累吧,毕竟刚开始学习IOS开发方面的知识,就当是巩固了撒! 还是 先看个效果图吧,如下! 接下来 看下工程目录吧,其实并没有必要,直接建立一个工程就行 ,算了,还是贴上来吧,如下: 工程目录中有个 Notes.json 文件,该文件就是 要解析的json数据了 ,也截下

[转]JSon数据解析的四种方式

转至http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此"http://www.bejson.com/"网站来进行JSON格式化校验(点击打开链接).此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便. 从IOS5开始,APPLE提供了对json的原生支持(NSJSONS