直接贴代码:(所需jar包:json-lib.jar,可能会关联一些其它的jar包,请自行搜索.)

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class JsonParser { @SuppressWarnings("rawtypes")
public void test() {
Map m = this.testJson("jsonString");
System.out.println(((Map) ((List) m.get("test")).get(0)).get("test_title"));
} @SuppressWarnings({ "rawtypes", "unchecked" })
public Map testJson(String str) {
JSONObject json = JSONObject.fromObject(str);
Iterator<?> it = json.keySet().iterator();
Map map = new HashMap();
while (it.hasNext()) {
String key = (String) it.next();
String value = json.getString(key);
if (this.isString(value)) {
map.put(key, value);
}
if (this.isJson(value)) {
map.put(key, this.testJson(value));
}
if (this.isJsonArray(value)) {
map.put(key, this.testJsonArray(value));
} }
return map;
} @SuppressWarnings({ "unchecked", "rawtypes" })
public List testJsonArray(String str) {
JSONArray jsonArr = JSONArray.fromObject(str);
List list = new ArrayList();
for (Object json : jsonArr) {
String jsonStr = json.toString();
    if(this.isString(jsonStr)){
    list.add(jsonStr);
    }
    if(this.isJson(jsonStr)){
    list.add(this.testJson(jsonStr.toString()));
    }
    if(this.isJsonArray(jsonStr)){
    list.add(this.testJsonArray(jsonStr.toString()));
    }
}
return list;
} public boolean isJson(String s) {
boolean flag = true;
try {
JSONObject.fromObject(s);
} catch (Exception e) {
flag = false;
}
return flag;
} public boolean isJsonArray(String s) {
boolean flag = true;
try {
JSONArray.fromObject(s);
} catch (Exception e) {
flag = false;
}
return flag;
} public boolean isString(String s) {
return !this.isJson(s) && !this.isJsonArray(s);
} public static void main(String[] args) {
JsonParser tj = new JsonParser();
tj.test(); } }

Java用JSONObject-lib来解析json串的更多相关文章

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

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

  2. C++ 解析json串

    首先, C++ 解析json串,需要用到第三方库(json_vc71_libmtd.lib).然后,VS2010,创建项目json_read,配置项目属性.最后,拷贝下面的代码就可以看到效果了. #i ...

  3. SpringMVC Jackson 库解析 json 串属性名大小写自动转换问题

    问题描述 在项目开发中,当实体类和表中定义的某个字段为 RMBPrice,首字母是大写的,sql 查询出来的列名也是大写的 RMBPrice,但是使用 jquery 的 ajax 返回请求响应时却出错 ...

  4. 怎么解析json串在.net中

    以前知道一种解析json串的方法,觉得有点麻烦.就从别的地方搜到了另一种 string json = vlt.getlist(); JObject jo = JObject.Parse(json); ...

  5. 在.net中怎么解析json串 [Error reading JObject from JsonReader. Current JsonReader item is not an obj]

    编辑时间:2017-05-10,增加一种转化list的方法 一.以前知道一种解析json串的方法,觉得有点麻烦.就从别的地方搜到了另一种 string json = vlt.getlist(); JO ...

  6. java使用jackson生成和解析JSON

    java使用jackson生成和解析JSON 1.导包 2.生成json和解析json package test; import com.fasterxml.jackson.core.JsonProc ...

  7. java解析json串获取key和value

    网上例子巨多,纯属个人笔记: JSONObject maleArray = maleObject.getJSONObject("extension"); Iterator<S ...

  8. 使用JSONObject生成和解析json

    1. json数据类型 类型 描述 Number 数字型 String 字符串型 Boolean 布尔型 Array 数组,以"[]"括起来 Object 对象,类似于C中的结构体 ...

  9. 【转载】使用JSONObject生成和解析json

    1. json数据类型 类型 描述 Number 数字型 String 字符串型 Boolean 布尔型 Array 数组 Object 对象 null 空值 (1)json中不区分整数.小数等类型, ...

随机推荐

  1. 【Kafka】Kafka为什么要加入分区的概念

    Kafka为什么要加入分区的概念 kafka 分区 作用_百度搜索 (1 封私信)kafka中的topic为什么要进行分区? - 知乎 Kafka安装版本选择 Apache Kafka  nc使用 n ...

  2. Mongo = get size of single document

      Object.bsonsize(db.test.findOne({type:"auto"}))

  3. ORACLE 执行计划

    有关oracle 执行计划几个不错的连接 执行计划的一些概念介绍:http://database.51cto.com/art/200611/34273.htm执行计划的例子:http://www.or ...

  4. iOS 获取APP相关信息 私有API

    /* Generated by RuntimeBrowser Image: /System/Library/Frameworks/MobileCoreServices.framework/Mobile ...

  5. C#常用特性

    1.服务器控件ID .NET服务器控件有三个ID,即:ID,ClientID和UniqueID ID为服务器控件的服务器标示,在服务器代码中通过ID来唯一区分服务器控件: ClientID是服务器控件 ...

  6. openfiler在esxi下的安装配置

    注意分区的时候如果硬盘太小自动分区会导致分配的卷大小不够用 后改为如下: 以root登录: 应该以openfiler登录,口令是password 也可以导入虚拟机安装 升级虚拟机硬件版本 终端登录用户 ...

  7. Django模板过滤器详解

    Django 模板过滤器也是我们在以后基于 Django 网站开发过程中会经常遇到的,如显示格式的转换.判断处理等.以下是 Django 过滤器列表,希望对为大家的开发带来一些方便. 一.形式:小写 ...

  8. Mina.Net实现的UDP多路广播

    主要用于未确定主机地址的情况下,可以使用多路广播和服务端通信,下面是官方提供的DEMO. using System; using System.Net; using System.Net.Socket ...

  9. C#实现U盘检查,并写入文件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. linux CPU占用率高(转)

    来自:http://www.cnitblog.com/houcy/archive/2012/11/28/86801.html 1.用top命令查看哪个进程占用CPU高 gateway网关进程14094 ...