`
wenlongsust
  • 浏览: 75926 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Java处理JSON的工具类(List、Map和JSON之间的转换)——依赖jsonlib支持Map嵌套

 
阅读更多

原文链接:http://www.itjhwd.com/java_json/

代码

package com.itjh.mmp.util;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections.map.ListOrderedMap;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
 * 
* 处理json的工具类.
* <br>本类为处理json的工具类
* @author slj
 */
public class JsonTools {

    /**
     * 
    * json转换list.
    * <br>详细说明
    * @param jsonStr json字符串
    * @return
    * @return List<Map<String,Object>> list
    * @throws
    * @author slj
    * @date 2013年12月24日 下午1:08:03
     */
    public static List<Map<String, Object>> parseJSON2List(String jsonStr){
        JSONArray jsonArr = JSONArray.fromObject(jsonStr);
        List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
        Iterator<JSONObject> it = jsonArr.iterator();
        while(it.hasNext()){
            JSONObject json2 = it.next();
            list.add(parseJSON2Map(json2.toString()));
        }
        return list;
    }

   /**
    * 
   * json转换map.
   * <br>详细说明
   * @param jsonStr json字符串
   * @return
   * @return Map<String,Object> 集合
   * @throws
   * @author slj
    */
    public static Map<String, Object> parseJSON2Map(String jsonStr){
        ListOrderedMap map = new ListOrderedMap();
        //最外层解析
        JSONObject json = JSONObject.fromObject(jsonStr);
        for(Object k : json.keySet()){
            Object v = json.get(k); 
            //如果内层还是数组的话,继续解析
            if(v instanceof JSONArray){
                List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
                Iterator<JSONObject> it = ((JSONArray)v).iterator();
                while(it.hasNext()){
                    JSONObject json2 = it.next();
                    list.add(parseJSON2Map(json2.toString()));
                }
                map.put(k.toString(), list);
            } else {
                map.put(k.toString(), v);
            }
        }
        return map;
    }

    /**
     * 
    * 通过HTTP获取JSON数据.
    * <br>通过HTTP获取JSON数据返回list
    * @param url 链接
    * @return
    * @return List<Map<String,Object>> list
    * @throws
    * @author slj
     */
    public static List<Map<String, Object>> getListByUrl(String url){
        try {
            //通过HTTP获取JSON数据
            InputStream in = new URL(url).openStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder sb = new StringBuilder();
            String line;
            while((line=reader.readLine())!=null){
                sb.append(line);
            }
            return parseJSON2List(sb.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

   /**
    * 
   * 通过HTTP获取JSON数据.
   * <br>通过HTTP获取JSON数据返回map
   * @param url 链接
   * @return
   * @return Map<String,Object> 集合
   * @throws
   * @author slj
    */
    public static Map<String, Object> getMapByUrl(String url){
        try {
            //通过HTTP获取JSON数据
            InputStream in = new URL(url).openStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder sb = new StringBuilder();
            String line;
            while((line=reader.readLine())!=null){
                sb.append(line);
            }
            return parseJSON2Map(sb.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 
    * map转换json.
    * <br>详细说明
    * @param map 集合
    * @return
    * @return String json字符串
    * @throws
    * @author slj
     */
    public static String mapToJson(Map<String, String> map) {
        Set<String> keys = map.keySet();
        String key = "";
        String value = "";
        StringBuffer jsonBuffer = new StringBuffer();
        jsonBuffer.append("{");
        for (Iterator<String> it = keys.iterator(); it.hasNext();) {
            key = (String) it.next();
            value = map.get(key);
            jsonBuffer.append(key + ":" +"\""+ value+"\"");
            if (it.hasNext()) {
                jsonBuffer.append(",");
            }
        }
        jsonBuffer.append("}");
        return jsonBuffer.toString();
    }

    //test
    public static void main(String[] args) {
        String url = "http://...";
        List<Map<String,Object>> list = getListByUrl(url);
        System.out.println(list);
    }
}

小龙点评

经过实际测试,Map嵌套可以成功转换!

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    JAVA-JSON工具转换类

    总的来说,`JAVA-JSON工具转换类`这个主题涵盖了JSON数据处理的核心部分,包括JSON的序列化和反序列化,以及数据类型的转换。通过`json-lib`和`ezmorph`这两个库,开发者可以轻松地在Java程序中处理JSON数据,而`...

    Java读取json文件,并转化为map取值

    如果JSON包含嵌套的对象或数组,它们会被转换为`Map`或`List`。 对于Map取值,你可以使用`get`方法: ```java String key = "exampleKey"; Object value = jsonData.get(key); ``` 如果值是另一个JSON对象或数组...

    不用第三方jar的json与object(map、list)互换java类

    首先,`JsonUtil.java`很可能是这个功能的核心工具类,它包含了将Java对象转换为JSON字符串以及将JSON字符串解析为Java对象的方法。在没有第三方库如Gson或Jackson的情况下,这通常通过使用Java内置的`org.json`包来...

    Gson解析(List和Map)格式json数据 - CSDN博客1

    总结来说,Gson是Java开发中处理JSON数据的强大工具,无论是List还是Map格式的JSON,都能轻松地转换为相应的Java对象,便于进一步的数据操作和处理。了解并熟练掌握Gson的使用,对于提升Java开发效率具有显著的帮助...

    java处理JSON格式数据的通用类

    【Java处理JSON格式数据的通用类】是一种在Java中处理JSON数据的标准方法,它能够方便地接收和返回JSON数据,解决开发过程中与JSON交互的问题。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛...

    json 转换为map

    `google-gson`库不仅限于JSON到Map的转换,还支持许多其他功能,例如将Java对象序列化为JSON,反序列化Java对象,处理日期和时间,自定义序列化和反序列化行为等。通过深入学习`Gson`库的API和使用示例,可以更有效...

    java处理json对象

    此外,JSON-Lib还支持将JSON对象与Java数组、List等集合类型相互转换。例如,如果你有一个JSON数组,可以这样处理: ```java String jsonArrayString = "[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age...

    java 和 json 对象间转换

    Java与JSON对象间转换的知识点涉及到Java中对象与JSON格式数据之间的互相转换方法,这是在Web开发和数据交互中常见的需求。在Java中处理JSON数据主要依靠一些第三方库,json-lib是其中之一,它能够将Java对象转换成...

    json 转化工具类

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端数据传输。...在实际开发中,根据项目的依赖和需求,选择合适的JSON库并利用其提供的工具类,可以有效地处理JSON数据。

    JsonUtils(Json转换工具类)

    《JsonUtils:强大的Json转换工具类》 在Java开发中,JSON作为一种轻量级的数据交换格式,被广泛用于服务器与客户端之间的数据传输。为了方便开发者处理JSON格式的数据,出现了许多库,如Jackson、Gson、Fastjson等...

    一个java处理JSON格式数据的通用类.pdf

    本文档将详细介绍一个用于Java中处理JSON数据的通用类——`JsonUtil`,该类封装了一系列方法用于实现JSON与Java对象之间的转换。 #### 类结构及包引入 `JsonUtil`位于`com.linghui.common.util`包下。为了实现JSON...

    使用json-lib实现json与Java对象的互转

    JSON(JavaScript Object ...这个库不仅提供了基本的转换功能,还支持自定义转换规则和处理复杂的数据结构,是 Java 开发中的实用工具。在实际开发中,根据具体需求选择合适的方法进行 JSON 处理,能显著提高开发效率。

    java利用json-lib操作json

    在Java中,json-lib是一个非常实用的库,它允许我们方便地进行JSON(JavaScript Object Notation)对象与Java对象之间的转换。JSON是一种轻量级的数据交换格式,广泛用于前后端数据交互。以下将详细介绍如何利用json...

    json格式转换工具类

    综上所述,"json格式转换工具类"涉及到的是如何在Java环境中高效、安全地进行JSON数据的序列化与反序列化,以及自定义转换规则和处理潜在的安全风险。选择合适的工具库,并理解其基本用法,是提升开发效率的关键。

    jsonlib.rar

    3. **集合处理**: JSONLib支持List、Set、Map等集合类型的转换,方便处理复杂的数据结构。 4. **XML与JSON互转**: JSONLib还提供了XML和JSON之间的转换功能,使得在两种格式间切换更加便捷。 5. **自定义序列化和反...

    Java操作json的通用类

    本文将详细介绍一个用于处理JSON数据的Java工具类——`JsonUtil`。 #### 二、包与导入 此工具类位于`com.baiyyy.polabs.util.json`包下,为了确保能够正确地处理JSON数据,它引入了多个必要的Java类和第三方库中的...

    json-lib之jar包,源代码及API文档

    此外,`json-lib`还支持与各种Java集合和类型进行互操作,如List、Set、Map等,这使得在JSON和Java对象之间进行转换变得非常直观。对于复杂的JSON结构,如嵌套的JSON对象或数组,`json-lib`也提供了相应的API来处理...

    java-json.zip

    4. **复杂JSON处理**:对于包含嵌套结构或复杂关系的JSON,可以使用`JsonNode`类(如Jackson)进行解析和操作。`JsonNode`是一个抽象类,表示JSON结构中的任何节点,可以遍历整个JSON树。 5. **JSONPath和JSON...

    android常用json传值解析工具类

    在Android开发中,数据交换和序列化经常使用JSON(JavaScript Object Notation)格式,因为它的轻量级、易读易写以及广泛支持。本篇文章将详细介绍如何使用阿里巴巴的Fastjson库进行JSON操作,并封装成一个方便使用...

Global site tag (gtag.js) - Google Analytics