• json解析从前端传入的数据


    前端页面用ajax请求访问后台方法 比如传的data数据是例如data数据类型是{userGroupId:"10000",alarmItems:[{id:"1000",type:"1"},{id:"10001",type:"2"}]}, 用json解析

    一般js文件写法是date:{} 但是由于这个写法有 {alaremItems:[]}数组 所以js写法一般为data:JSON.stringify(jsondata), 这个jsondata是申明的数组

    var jsondata={userGroupId:"10000",alarmItems:[{id:"1000",type:"1"},{id:"10001",type:"2"}]}; 然后在ajax 请求中的 data:JSON.stringify(jsondata),就可以了这个是前端传输

    具体的如下: var jsondata={userGroupId:"10000",alarmItems:[{id:"1000",type:"1"},{id:"10001",type:"2"}]};

            $.ajax({

              type:"post",

              contentType:"application/json;charset=utf-8",

              url:"http://具体的项目到具体的方法",

              data:JSON.stringify(jsondata),

              async:true,

              dataType:"json",

              success:function(data){

                console.log(data);          

      }

            error:function(err){ 

    }   

              });

    后端解析json 首先第一步接受 data数据一般在controller中的方法中这样写  @RequestBody LinkedHashMap<String,Object> list用这个接受{userGroupId:"10000",alarmItems:[{id:"1000",type:"1"},{id:"10001",type:"2"}]};前端传过来的 data,LinkedHashMap<String,Object> 对象

    @ResponseBody

    @RequestMapping(value="save")

    pulbic AjaxJson save(@RequestBody LinkedHashMap<String,Object> list){

      AjaxJson  j=new AjaxJson();

     String jsonStr=JSON.toJSONString(list);//-json字符串

        JSONObject json=JSON.parseObject(jsonStr);//json对象

     String uid=json.getString("userGroupId");//----获取对应的值

     JSONArray alarmItems=json.getJSONArray("alarmItems");//---获取数组值 JSONArray是json数组 []中括号的内容

    for(int i=0;i<alarmItems.size();i++){

      JSONObject alarmItem=alarmItems.getJSONObject(i); //----JSONObject这个是 json的对象就是[]中的{}内容

       String idstr=alarmItem.getString("id");//---获取ID的值

      String type=alarmItem.getString("type");//---获取type的值

      //---后面的就是对数据的处理 增删改查 方法

    }

    j.setMsg("用户操作成功");

    return j;

    }

    下面讲解一下AjaxJson这个类的作用和写法

    具体代码如下:

    public class AjaxJson(){

      private boolean success=true;//--是否成功

      private String errorCode="-1";//--错误代码

      private String msg="操作成功";//--- 提示信息

      private LinkendHashMap<String,Object>  body=new LinkedHashMap();//---封装JSON的map

           //----省略   set和get的方法生成;

      //-- 其中又写了两个其他的方法  如下:

      public void put(String key,Object value){

        body.put(key,value);

           }

      public void remove(String key){

        body.remove(key);

      }

      @JsonIgnore//--返回对象时忽略此属性   JsonMapper类继承了 ObjectMapper这个类  

      public String getJsonStr(){

      String json=JsonMapper.getInstance().toJson(this);

      return json;

      }

    }

  • 相关阅读:
    八、drop和alter
    undefined reference to ****
    cgdb的认识
    ping: unknown host www.baidu.com
    ubuntu mysql汉字写入只写入了一个字符
    gdb map.insert方法运行异常:program received signal segmentation fault
    ubuntu环境下c++ 模板特化的编写
    putty fatal error software caused connection
    ubuntu共享文件夹不能被访问,其他主机ping不通该服务器
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 问题
  • 原文地址:https://www.cnblogs.com/xzcBY/p/7210289.html
Copyright © 2020-2023  润新知