直接贴代码:(所需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. python 听课笔记(一)

  2. tcp socket/ unix socket

    A UNIX socket is an inter-process communication mechanism that allows bidirectional data exchange be ...

  3. HttpWebRequest抓取网页数据返回异常:远程服务器返回错误: (503) 服务器不可用

      解决方法:   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webURL);                //声明一个H ...

  4. [Canvas]人物型英雄出现(前作仅为箭头)

    源码点此下载,用浏览器打开index.html观看. 代码: <!DOCTYPE html> <html lang="utf-8"> <meta ht ...

  5. Python脚本生成sitemap

    项目须要用脚本生成sitemap,中间学习了一下sitemap的格式和lxml库的使用方法.把结果记录一下,方便以后须要直接拿来用. 来自Python脚本生成sitemap 安装lxml 首先须要pi ...

  6. 【转】application.properties 常见配置

    Various properties can be specified inside your application.properties/application.yml file or as co ...

  7. HOW TO: Synchronize changes when completing a P2V or V2V with VMware vCenter Converter Standalone 5.1

    http://www.experts-exchange.com/Software/VMWare/A_11489-HOW-TO-Synchronize-changes-when-completing-a ...

  8. Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较

    Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f " ...

  9. Linux内核配置:定制配置选项

    很多嵌入式开发人员都需要在Linux内核中添加一些特性,以支持特别的定制硬件. ARM架构的顶层Kconfig文件中,可以看到一个名为System Type的菜单项.在ARM system type提 ...

  10. 使用Phantom omni力反馈设备控制机器人

    传统的工业机器人普遍采用电机 .齿轮减速器 .关节轴三者直接连接的传动机构,这种机构要求电机与减速器安装在机械臂关节附近,其缺点是对于多关节机械臂,下一级关节的电机与减速器等驱动装置成为上一级关节的额 ...