前端传入json转为java对象

本文介绍了一种复杂的JSON对象结构,并提供了三种不同的方法来解析这种结构:使用Fastjson、Gson和JSON Object。这些方法适用于Java后端开发,尤其是在处理带有嵌套数组的复杂JSON数据时。

在实际开发中 遇到较复杂的json对象 如下:

function sendJson() {
        var stu={
            "id": "sdfs", 
            "orgId": "sdfsdf", 
            "schemeId": "sdfs", 
            "executeTime": "20180223T122363", 
            "userName": "", 
            "schemeXML": "SDFSDFSDFSDF", 
            "isManual": true, 
            "runningStatus": 0, 
            "listContent": [
                {
                    "relationId": "sdfs ", 
                    "des1": "232", 
                    "des2": "23", 
                    "analysisResult": "232", 
                    "ListCameraResult": [
                        {
                            "cameraId": "23", 
                            "guideRailId": "23", 
                            "pictPath": "3232", 
                            "recordFileSessiondId": "wqeqw", 
                            "presetIndex": "2", 
                            "guidePresetIndex": "23", 
                            "resultGenTime": "21321321", 
                            "analysisType": "2", 
                            "para1": "1", 
                            "para2": "2", 
                            "para3": "3", 
                            "para4": "4", 
                            "para5": "5", 
                            "para6": "6", 
                            "para7": "7", 
                            "para8": "8"
                        }
                    ], 
                    "ListEleDeviceResults": [
                        {
                            "id": "11", 
                            "ListCamera": [
                                {
                                    "presetIndex": "23", 
                                    "guidePresetIndex": "232", 
                                    "cameraId": "232", 
                                    "guideRailId": "232", 
                                    "pictPath": "drwqrq"
                                }
                            ], 
                            "eleId": "23", 
                            "resultGenTime": "232", 
                            "pictPath": "232", 
                            "analysisType": "323", 
                            "para1": "2332", 
                            "para2": "", 
                            "para3": "", 
                            "para4": "", 
                            "para5": "", 
                            "para6": "", 
                            "para7": "", 
                            "para8": ""
                        }
                    ]
                }
            ]

        };

可以发现 这是一个json对象里面有多个json数组 json数组里面在套数组的格式  

java后台使用框架为Jfianl框架  

第一种方式:

/* 获取到前端传递json*/

String JsonArr = HttpKit.readData(getRequest());

ReqPatrolSchemeInfoModel rModel = JSON.parseObject(JsonArr, ReqPatrolSchemeInfoModel.class);

(所需jar包:com.alibaba.fastjson.JSON)

当然java bean ReqPatrolSchemeInfoModel 必须和前端传入json格式保持一致 


省略get set..

第二种方式:

使用google提供的

Gson gson = new Gson();

ReqPatrolSchemeInfoModel person = gson.fromJson(JsonArr,ReqPatrolSchemeInfoModel.class);

第三种方式:

/* 转为json对象*/
//     JSONObject jObject = JSONObject.fromObject(JsonArr);
// ReqPatrolSchemeInfoModel rModel =(ReqPatrolSchemeInfoModel)jObject.toBean(jObject,ReqPatrolSchemeInfoModel.class);
    /* jsonObkect转java对象*/
//     Map<String, Class> classMap = new HashMap<String,Class>();
//     classMap.put("listContentClass", ListContent.class);
//     classMap.put("ListCameraResult", CameraResults.class);
//     classMap.put("listEleDeviceResults", EleDeviceResults.class);
//     classMap.put("list", ListCamera.class);
//     ReqPatrolSchemeInfoModel rModel =(ReqPatrolSchemeInfoModel)JSONObject.toBean(jObject,ReqPatrolSchemeInfoModel.class,classMap);
//     System.out.println(rModel);


httpkit是精巧的java嵌入式http服务器,超快的启动速度(实测仅需80毫秒),是tomcat、jetty的完美替代方案。 使用方法//起一个server实例 int port = 7777; HttpServer server = HttpServer.bind(port); //设置上下文路径 server.setContextPath("root"); //设置controller类的扫描包 server.packageSearchAndInit("com.lnwazg.main.ctrl"); //设置自动磁盘扫描 server.autoSearchThenAddWatchResourceDirRoute(); //监听在这个端口处 server.listen(); 然后访问文件列表: http://127.0.0.1:7777/root/list 访问具体的控制器 http://127.0.0.1:7777/root/base/index Controller类的写法package com.lnwazg.main.ctrl; import java.io.File; import java.util.ArrayList; import java.util.List; import com.lnwazg.httpkit.anno.BasePath; import com.lnwazg.httpkit.controller.Controller; /**  * 示例controller<br>  * 注解指定这个类的path  * @author nan.li  * @version 2016年11月30日  */ @BasePath("/base") public class FirstController extends Controller {     void index()     {         Person person = new Person();         person.age = "18";         person.name = "hudson";         List<Person> list = new ArrayList<>();         for (int i = 0; i < 5; i )         {             list.add(person);         }         person = new Person();         person.name = getParam("fff");         list.add(person);                  //输出abc         ok("abc");                  //输出一个json对象         //okJson(list);                  //        okJson(GsonHelper.gson.toJson(list));         //        okJson(list);         //        okJson(new FrontObj().success().setData(list));         //        okJson(success(list));         //        okJson(fail(list));         //        okJson(fail(list,10002,"换错误"));         //        okJson(fail(10002, "换错误"));         //        okJson(fail(10003));     }          void index2()     {         //输出一个文件         okFile(new File("c:\\1.jpg"));     }          public static class Person     {         String name;                  String age;     } } 标签:httpkit
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值