将JavaBean对象/List或Set或Map对象转成JSON

本文详细介绍了如何在Struts2框架中将JavaBean对象、List、Set或Map对象转换成JSON格式,包括导入相关依赖、配置Struts.xml、提供getter方法及在JSP页面中的获取和使用JSON数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将JavaBean对象/List或Set或Map对象转成JSON

使用Struts内置功能进行转换

步骤:
1) 导入 struts2-json-plug.jar
2) 在struts.xml中,让我们自定义的包继承“json-default”:

    <package name="myPackage" extends="json-default" namespace="/">
    </package>

3) 在Action的中添加json返回类型

    <result name="success" type="json"/>

4) 为将要转换的对象提供get方法

-> 在jsp页面中,对于转换的结果我们可以这样获取
var jsonJAVA = ajax.responseText; //注意,我们获取到的是JSON类型的字符串,也可说jsonJAVA
NT:java格式的json文本,是不能直接被js执行的
-> 解决方案:将java格式的json文本,转成js格式的json文本, 使用eval()函数,但应注意书写格式,即变量要加上”()”
var jsonJS = eval(“(“+jsonJAVA+”)”);

使用第三方工具进行转换

  1. 准备导入第三方jar包:
    》commons-beanutils-1.7.0.jar
    》commons-collections-3.1.jar
    》commons-lang-2.5.jar
    》commons-logging-1.1.1.jar
    》ezmorph-1.0.3.jar
    》json-lib-2.1-jdk15.jar

2.使用API进行,转换,并将结果以流的形式,打给AJAX

public class TestBean2Json {
    private static void javabean2json() {
        City city = new City(1,"广州");
        JSONArray jSONArray = JSONArray.fromObject(city);
        String jsonJAVA = jSONArray.toString();
        System.out.println(jsonJAVA);
        //[{"id":1,"name":"广州"}]
    }
    private static void list2json() {
        List<City> cityList = new ArrayList<City>();
        cityList.add(new City(1,"广州"));
        cityList.add(new City(2,"珠海"));
        JSONArray jSONArray = JSONArray.fromObject(cityList);
        String jsonJAVA = jSONArray.toString();
        System.out.println(jsonJAVA);
        //[{"id":1,"name":"广州"},{"id":2,"name":"珠海"}]
    }
    private static void set2json() {
        Set<City> citySet = new LinkedHashSet<City>();
        citySet.add(new City(1,"广州"));
        citySet.add(new City(2,"珠海"));
        JSONArray jSONArray = JSONArray.fromObject(citySet);
        String jsonJAVA = jSONArray.toString();
        System.out.println(jsonJAVA);
        //[{"id":1,"name":"广州"},{"id":2,"name":"珠海"}]
    }
    private static void javabeanlist2json() {
        List<City> cityList = new ArrayList<City>();
        cityList.add(new City(1,"中山"));
        cityList.add(new City(2,"佛山"));
        Province province = new Province(1,"广东",cityList);

        JSONArray jSONArray = JSONArray.fromObject(province);
        String jsonJAVA = jSONArray.toString();
        System.out.println(jsonJAVA);
        /*
          [
             {
              "id":1,
              "name":"广东"
              "cityList":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}],
             }
          ]
          */
    }
    private static void map2json() {

        List<City> cityList = new ArrayList<City>();
        cityList.add(new City(1,"中山"));
        cityList.add(new City(2,"佛山"));

        Map<String,Object> map = new LinkedHashMap<String,Object>();
        map.put("total",cityList.size());//表示集合的长度
        map.put("rows",cityList);//rows表示集合

        JSONArray jSONArray = JSONArray.fromObject(map);
        String jsonJAVA = jSONArray.toString();
        System.out.println(jsonJAVA);
        //[{"total":2,"rows":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}]}]

        jsonJAVA = jsonJAVA.substring(1,jsonJAVA.length()-1);
        System.out.println(jsonJAVA);
    }

    public static void main(String[] args) {
        //javabean2json();
        //list2json();
        //set2json();
        //javabeanlist2json();
        map2json();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值