精华内容
下载资源
问答
  • 后台返回json对象,前台取出属性

    千次阅读 2018-06-11 00:08:15
    response.setContentType("...charset=UTF-8"); Map map = new HashMap(); map.put("... String json = JSONObject.fromObject(map).toString(); response.getWriter().write(...
    		response.setContentType("text/html;charset=UTF-8"); 
    		Map map = new HashMap();
    		map.put("name", "testname");
    		
    		String json = JSONObject.fromObject(map).toString();
    		response.getWriter().write(json.toString());
    		response.getWriter().flush();
    		response.getWriter().close();
    		return null;

    上面是后台返回的json对象,在前台取出name的值。

    $.post("../../strtgcObjctvs.do","ope=init",function(data){
    
    var json = eval("("+data+")"); // data的值是json字符串,这行把字符串转成object
            alert(json.name);// 取出属性值testname
    
    }

    借鉴的别人的  以后方便自己查看 

     文章出自:https://blog.csdn.net/abaloneking/article/details/17221683

    感谢 !!!

    展开全文
  • 后台返回json字符串转json对象

    千次阅读 2018-06-06 10:37:16
    $.ajax({ url: "xxxx", type: "GET", // dataType: "JSONP", jsonp: 'jsonCallback', data: "id="+Pid[1], success: function (data) { var stra = JSON.parse(data); }
     $.ajax({
            url: "xxxx",
            type: "GET",
            // dataType: "JSONP",
            jsonp: 'jsonCallback',
            data: "id="+Pid[1],
            success: function (data) {
                   var stra = JSON.parse(data);
        }

    展开全文
  • 主要介绍了js+ajax处理java后台返回json对象循环创建到表格的方法,涉及javascript操作json对象动态创建表格以及基于ajax与后台交互的相关技巧,需要的朋友可以参考下
  • 后台返回json数据和前台解析json数据 一般来说web开发中,前台采用json数据提交给后台,后台处理数据以后返回json数据给前台,前台解析json,显示数据。 总而言之,前后台直接交换的数据格式最常用的非json数据...

    后台返回json数据给前台和前台解析json数据(总结)

    一般来说web开发中,前台采用json数据提交给后台,后台处理数据以后返回json数据给前台,前台解析json,显示数据。
    总而言之,前后台直接交换的数据格式最常用的非json数据无疑了。
    这里就总结一些json数据的前后台处理方式。

    1.JSON数据

    JSON(JavaScript Object Notation, JS 对象简谱)

    是一种轻量级的数据交换格式,比xml更轻巧(由于 JSON 所使用的字符要比 XML 少得多,可以大大得节约传输数据所占用的带宽)。

    json是javascript原生格式,就是说在javascript中处理json数据,需要引用其他API或工具包。

    简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

    只需要记住!
    Json是一种文本字符串!被存储在responseText属性中,而读取json数据可以使用javascript的eval函数来解析json。

    2.json规则:

    在 JS 语言中,一切都是对象,对象是一个无序的 “键/值” 对集合
    因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:
    • 对象表示为键值对.
    • 数据由逗号分隔.
    • 花括号{}保存对象.
    • 方括号[]保存数组.

    键/值对组合中的键名写在前面并用双引号 “” 包裹,使用冒号 : 分隔,然后紧接着值:

    {"firstName": "Json"}
    

    这很容易理解,等价于这条 JavaScript 语句:

    {firstName : "Json"}
    

    对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, …} 的键值对结构。

    在面向对象的语言中,key 为对象的属性,value 为对应的值。

    键名可以使用整数和字符串来表示,值的类型可以是任意类型。

    数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 [“java”, “javascript”, “vb”, …] 的索引结构。

    在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,键名可以使用整数和字符串来表示,值的类型可以是任意类型。

    3.JSON 与 JS 对象的关系:

    很多人搞不清楚 JSON 和 Js 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:
    JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串
    如:

    var obj = {a: 'Hello', b: 'World'};    //这是一个对象,注意键名也是可以使用引号包裹的
    var json = '{"a": "Hello", "b": "World"}';  //这是一个 JSON 字符串,本质是一个字符串
    

    4.后台返回json数据

    一般来说,使用JsonObject来将Java类型数据转换成Json类型,首先要下载该库相关的jar包,下载地址如下:

    json-jar包下载

    JsonObject的使用:
    后台controller部分代码:

    JSONObject object = new JSONObject();  //创建Json对象
    object.put("username", "张三");         //设置Json对象的属性
    object.put("password", "123456");
    System.out.println(object.toString());  //调用toString方法将json对象转换成json字符串
    
    //把json数据返回给浏览器:
    PrintWriter out = cu.getWriterOut(response);
    out.print(object.toString());
    //或者
    response.getWriter().write(jsonObject.toString());
    
    

    5.在JavaScript代码中接收Json数据:

    假设result为浏览器得到的json数据,可以使用以下js代码可以将json对象转换为字符串。

    比如:

    通过$.get从后台获取了一段json串{“id”:“1”,“name”:“ww”},然后要拿到这里面的id和name值:

    注意!注意!注意!
    如果你直接这么写!

    $.get(url,
         function(data) {
           alert("ID:" + data.id + "\nName:" + data.name);
         });
    

    直接这样写的话,界面会alert提示undefined,因为没能正确解析返回的字符串。

    图示:
    在这里插入图片描述

    解决方案:

    1、 需要用eval()函数

    将返回的串转化成可用的strig串,eval(data),但是因为原串里面是以{}开始和结束的,会被认为是可执行方法,因此需要加上()包围起来,最终形成:

    var jsonobj= eval('(' + data + ')');  // 把JSON字符串解析为javascript对象
    

    然后再

    alert("ID:" + jsonobj.id + "\nName:" + jsonobj.name);
    

    各种正常的按key取值,就能正常显示了。

    2、获取的时候就直接表示返回的是json格式,用 . g e t J S O N 代 替 .getJSON代替 .getJSON.get,其他代码不变,也能正常获取。

    也可以直接获取json对象的属性,如下:console.log(result.username);

    前端js代码:

    $.ajax({
    url: url,
    type: "POST",
    data: parameters,
    dataType:"json",
    async: false,
    success: function(result){
    var newData = JSON.stringify(result);    //将json对象转换为字符串
    newData = eval("("+newData+")");   /解析json
    
    var annualDays = newData.annualDays;
    var entryDate = newData.entryDate;
    
    $("input[name='extendDataFormInfo.value(fd_shengyu_nianjia)']").val(annualDays);
    $("input[name='extendDataFormInfo.value(fd_ruzhi_date)']").val(entryDate);
    
    }});
    
    

    ps: 注意注释中的代码,如果少了这一句,那么直接alert(result);得到的结果会是

    在这里插入图片描述

    所以在这里stringfy()的作用是用于从一个对象解析出字符串
    加上了var newData = JSON.stringify(result);这句,然后你再alert(newData);
    得到的就会是你想要的结果,如下:
    在这里插入图片描述

    另外:
    如果返回的json数据格式不是很规范的解决办法:

    判断后台返回的数据格式是否字符串,是则转,不是则不转?

      var $obj = (typeof data.content == 'string') ? JSON.parse(data.content):data.content
    

    总结:

    1. 前台发送请求,并且设置数据为json格式‘
        $.ajax({
        url:"selectByid.",
        datatype:'json',
        data:{id:id}, // 发送数据 
    
    1. 数据回调函数
    success:function(data){
    alert(data);
    var json = eval("("+data+")");//将json类型字符串转换为json对象
    alert("hjf"+json.name);
    
    1. 给对应的input赋值:
    $("#id").val(json.id),
    $("#name").val(json.name),
    $("#age").val(json.age);
    
    1. 后台代码:返回json数据
    response.getWriter().print(str);    //将数据返回前台ajax
    

    6.前端ajax接不到json解决?

    在前台:

    async:false,                //加上这个属性就好了
    

    7.返回的json字符串中有转义符解决?

    比如:

    "result":"{\"id\":\"60\",\"qid\":\"1\",\"bazi\":\"baiz\",\"shenxiao\":\"\",\"xingzuo\":\"\",\"wuge\":\"\",\"jianyi\":\"\",\}"
    

    这样我们我们使用JSON.parse(result) ,直接转化为json的话是会报错的。

    解决方法:
    我们先把转义符用正则表达式去掉,

       var string = result.replace("/\\","");
       var getDataArray = JSON.parse(string)
    

    这样就OK了,不过要注意有时候也是需要指定返回数据类型的
    dataType:“json”

    8.使用其他的json依赖包方式:

    引入阿里巴巴的json依赖包:

        <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>fastjson</artifactId>
         <version>1.2.9</version>
        </dependency>
    

    模拟后台:

        String params="{\"channelCode\":\"bbb\",\"accountNo\":\"121300000932\",\"message\":\"字符信息解密成功\",\"status\":\"1\"}";
        JSONObject pa=JSONObject.parseObject(params);
        System.out.println(pa.getString("message"));
    

    结果:
    在这里插入图片描述

    或者:
    引入net.sf.json-lib依赖包:

        <dependency>
          <groupId>net.sf.json-lib</groupId>
          <artifactId>json-lib</artifactId>
          <version>2.4</version>		 
          <classifier>jdk15</classifier>
        </dependency>
    

    后台:

    String params="{\"channelCode\":\"ccy\",\"accountNo\":\"121300000932\",\"message\":\"字符信息解密成功\",\"status\":\"1\"}";
    JSONObject pa=JSONObject.fromObject(params);
    String accountNo=pa.getString("accountNo");
    System.out.println(accountNo);
    

    结果:
    在这里插入图片描述

    9.后台对象转换json数据返回给前台

    List集合转换成json代码:

      List list = new ArrayList();
      list.add( "first" );
      list.add( "second" );
      JSONArray jsonArray2 = JSONArray.fromObject( list );
    

    Map集合转换成json代码:

       Map map = new HashMap();
      map.put("name", "json");
      map.put("bool", Boolean.TRUE);
      map.put("int", new Integer(1));
      map.put("arr", new String[] { "a", "b" });
      map.put("func", "function(i){ return this.arr[i]; }");
      JSONObject json = JSONObject.fromObject(map);
    

    或者在项目中加入引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:
    下载地址

      1.commons-lang.jar
      2.commons-beanutils.jar
      3.commons-collections.jar
      4.commons-logging.jar 
      5.ezmorph.jar
      6.json-lib-2.2.2-jdk15.jar
    

    用法同上

      JSONObject jsonObject = JSONObject.fromObject(message);
      getResponse().getWriter().write(jsonObject.toString());
    

    当把数据转为json后,用如上的方法发送到客户端。前端就可以取得json数据了。(可以参考最下面的实例)

    10.后台返回数据给前台,json中文乱码解决方法

    在实际运用场景中,当前台发起请求后,我们需要从后台返回数据给前台,这时,如果返回的数据中包含中文,则经常会出现在后台查询出来都是好好,但是传输回去就莫名的乱码了,而且即使在 web.xml 中进行编码过滤了,但还是乱码。

    解决办法:
    只需要在 spring-mvc.xml 配置文件中配置一次就好,省去了我们重复写的麻烦,配置内容如下:

    <!--自定义消息转换器的编码,解决后台传输json回前台时,中文乱码问题-->
        <mvc:annotation-driven >
            <mvc:message-converters register-defaults="true">
                <bean class="org.springframework.http.converter.StringHttpMessageConverter" >
                    <property name = "supportedMediaTypes">
                        <list>
                            <value>application/json;charset=utf-8</value>
                            <value>text/html;charset=utf-8</value>
                            <!-- application 可以在任意 form 表单里面 enctype 属性默认找到 -->
                            <value>application/x-www-form-urlencoded</value>
                        </list>
                    </property>
                </bean>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" ></bean>
            </mvc:message-converters>
        </mvc:annotation-driven>
    

    加上这段配置,保存重新运行,再次访问,会发现,原先的中文乱码都已经正常显示了。

    方法二:在后台的方法映射添加:

    @RequestMapping(value="/getphone",produces = “text/plain;charset=utf-8”)

    11.Spring MVC返回json数据的方式

    1. 采用@ResponseBody注解

    @ResponseBody 注解的作用是:

    将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

    使用举例:
    在这里插入图片描述

    使用@ResponseBody 注解返回响应体 直接将返回值序列化json
    优点:不需要自己再处理

    再举例:

    RequestMapping("/login")
      @ResponseBody
      public User login(User user){
        return user;
      }
    

    使用@ResponseBody 注解返回响应体 直接将返回值序列化json。

    User字段:userName pwd,那么在前台接收到的数据为:’{“userName”:“xxx”,“pwd”:“xxx”}’,效果等同于如下代码:

    @RequestMapping("/login")
    public void login(User user, HttpServletResponse response){
       response.getWriter.write(JSONObject.fromObject(user).toString());
    }
    
    

    需要在springmvc的配置文件xml中添加:

    <mvc:annotation-driven/>  
    

    2. 采用工具类,进行json格式转换带回

    JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包。在本例中,我们将使用JSONObject类创建JSONObject对象,然后我们打印这些对象的值。为了使用JSONObject对象,我们要引入"net.sf.json"包。为了给对象添加元素,我们要使用put()方法。

    要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:

    commons-lang.jar
    commons-beanutils.jar
    commons-collections.jar
    commons-logging.jar 
    ezmorph.jar
    json-lib-2.2.2-jdk15.jar
    

    效果:在这里插入图片描述

    工具类:
    ResponseUtil.java

    package com.zout.utils;
    import java.io.PrintWriter;
    import javax.servlet.http.HttpServletResponse;
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    /**
     *@class_name:ResponseUtil  
     *@param: EasyUi-响应工具类
     *@return: 返回字符串格式数据、result是JSONObject对象(json对象)
     *@author:Zoutao
     *@createtime:2018年3月8日
     */
    public class ResponseUtil {
    	public static void write(HttpServletResponse response, Object result)
    			throws Exception {
    		response.setContentType("text/html;charset=utf-8");
    		response.addHeader("Access-Control-Allow-Origin", "*");
    		PrintWriter out = response.getWriter();
    		out.println(result.toString());
    		System.out.println("带回的json字符串为:"+result.toString()+"类型为:"+result.getClass().getName());
    		out.flush();
    		out.close();
    	}
    	
    	public static void main(String[] args) throws Exception {
    		/*在web运用控制层中调用如下:*/
    		JSONObject result = new JSONObject(); //创建json对象
    		JSONArray jsonArray = JSONArray.fromObject("name:zhangsan"); //字符串转为json数组
    		result.put("rows", jsonArray);  //放入json数组中,并起个名字
    		HttpServletResponse response = null; //jsp的response对象
    		ResponseUtil.write(response, result); //result写入response带回前台,jsp按名字拿取。
    	}
    }
    
    

    后台具体调用:

    	JSONObject result = new JSONObject();
    			if (resultTotal > 0) {		//处理结果
    				System.out.println("操作成功。");
    				result.put("success",true)
    				result.put("message","操作成功"); //消息语句
    			} else {
    				System.out.println("操作失败。");
    				result.put("success", false);			
    				result.put("message","操作失败");
    			}
    			ResponseUtil.write(response,result); //带回字符串+状态码
    			return null;
    

    图:
    在这里插入图片描述

    后台已经通过工具类封装为json字符串了,使用response带回需要的数据,使用result带回状态字符串或状态码。

    前台:
    这是当成返回一个json字符串,然后直接采取字符串截取的方式,取出消息语句message等消息。
    在这里插入图片描述

    这是另外一种写法:就是解析传回来的json字符串我js的对象,然后按照key/value的取值。

      function (data) {
              var data=eval("("+data+")");  //解析json
             //alert(data.message)
                $.messager.show({
                  title:'消息',
                  msg:data.message,  //按key取值
                  timeout:1000,
                  showType:'slide',
                  height:120,
                 width:200
         });
     });
    

    推荐这种方式。
    效果图:
    在这里插入图片描述


    以上都是后台返回json数据给前台和前台解析json数据的一些总结,还有json数据的封装,工具类的使用等等,东西有点复杂有点多,挑选自己需要的地方即可。

    另外的一些常用的web开发json:

    Json–Java数据类型对照表(映射)表

    展开全文
  • 首先是 前台ajax代码 $.ajax( {  type : "POST",  url : "url",  data: "",  success : function(msg) {    //此处msg并不是json对象,需要转换  json = JSON.parse


    首先是 前台ajax代码


    $.ajax( {  
              type : "POST",  
              url : "url",  
              data: "",  
              success : function(msg) { 
      

    //此处msg并不是json对象,需要转换
             json = JSON.parse(msg);

    }



    然后是后台:

    这边如果是个list或数组

    可以用

    JSONArray  jsonmap = JSONArray  .fromObject(list); 

    如果是map<String,Object>如map<String,List>

    就用

    JSONObject  jsonmap = JSONObject.fromObject(tMap); 
    //System.out.println(jsonmap); 
    //List<String> strList = new ArrayList<String>();
    pWriter.print(jsonmap);
    pWriter.flush();
    pWriter.close();



    展开全文
  • Thinkphp 后台返回JSON,前台转化为对象后台Thinkphp向前台返回数据// 构造用户数据基础模型 $userModel = M('ecnu_mind.user_custom'); //获取其中的姓名 $user = $userModel->where($condition)->field('user_id,...
  • jsp页面获取后台返回对象对象其中一个属性是list。 public class OwnerShopDto { @JsonProperty(value = "shopId") privateInteger shopId; @JsonProperty(value = "shopName") privateString shopName; ...
  •  * 将后台返回json 对象快速填充到表单  * @param jsonStr   */ function loadData(jsonStr){  var obj = jsonStr;  var key,value,tagName,type,arr;  for(x in obj){  key = x;  value =
  • rest API中后台接收json对象数组

    万次阅读 2016-10-17 15:39:12
    在使用rest API的时候,经常会碰到前台给后台发送一个...故在rest API的后台接收方一般采用json对象数组传递;举例如下:接口 : xxx/xxx/xxx 描述 : xxxxxx; method : POST requestBody :[ { "scenarioId": "111
  • java后台json对象,json数组的生成

    千次阅读 2018-12-10 02:16:00
    JSONArray:有一个add(JSONObject)方法,可以向JSONArray中添加json对象,使用需要配置相应的jar包     servlet向ajax返回JSON的方式为:pw.append(json.toString) JSON.parse(data)...
  • 后台返回json给jqgrid

    2017-01-26 16:03:49
    以下是后台处理并返回json ![图片说明](https://img-ask.csdn.net/upload/201701/27/1485446587_664407.png) 以下是return json断点时获取的值 上半对应后台没有注释的部分 下半对应后台被注释的部分 ![图片说明...
  • ajax struts 无刷新访问后台返回json数据,返回list、map,java类对象等json数据,前台js解析json数据,内有jar包,代码类。是一个完整的项目实例。
  • 今天小编就为大家分享一篇jQuery中ajax请求后台返回json数据并渲染HTML的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 例如:后台返回的时[{name:JM,age:20},{name:LILI,age:20}], 如果直接计算这个leng,会是37,但是如果调用了JSON.parse();之后的长度就是2,也可以用“.”来取出对应的key值了 ...
  • C#后台返回json类型数据

    热门讨论 2013-11-29 09:09:11
    只需要将dt传过来就能够生成json类型数据
  • 后台返回json对象,前台取值

    千次阅读 2013-01-10 10:10:46
    valMap.put("cmp",JSONObject.fromObject(costjsonstr)....//后台通过JSONObject得到cmp所对应的int值,放入到valMap的key为cmp中 return ok().put("data", valMap);///后台valMap是Map值 ajaxGet({  url:ur
  • 首先要将的是Json对象和Json字符串的区别 硬菜: 记录次博客的主要原因: 不能很好的去分辨Json对象和字符串。 [{"ID":"1","name":"张三","pwd":"1"},{"ID":"2","name":"李四","pwd":"2"},{"ID":"3","nam...
  • 后台返回json,在json格式化中也是正确,前台就是打不出来里面的元素. 强转json报错Unexpected token :
  • 因为返回的字符串中有转义符,如下: "result":"{\"id\":\"60\",\"qid\":\"1\",\"bazi\":\"baiz\",\"shenxiao\":\"\&...
  • 本文实例讲述了thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json。分享给大家供大家参考,具体如下: 知识点总结 1.json格式标准 { 'key':"value" } {"state":"1","msg":"\u7b80\u5386\u6295\u...
  • 后台$.post交互并返回JSON对象

    千次阅读 2017-06-22 22:50:01
    1、前台代码: $.post(url,{"blogId":blogId},function(reData){ ...[1]zhuchunyan_aijia,ajax请求返回json字符串/json对象 处理,http://blog.csdn.net/zhuchunyan_aijia/article/details/50730700
  • 这两天一直被这个问题困扰,解决的过程倒学到了不少东西.本打算写一篇总结,但发现网上这一篇写的已经很好了.十分推荐你们看一下
  • ajax返回json字符串转换为JSON对象

    千次阅读 2017-03-02 10:48:58
    StringBuilder json字符串转换为JSON对象,现在根据网上的内容和自己的理解总结一下这方面的内容  json数据是一种经型的实时数据交互的数据存储方法,使用到最多的应该是ajax与json配合使用了,下面我来给大 ...
  • ajaxFileUpload上传文件,后台返回json类型,在IE上不兼容 IE上的表现是直接弹出下载框,提示下载json文件,网上解决的办法挺多,最终选择将返回的json类型变为返回string类型,非常方便,如下 ObjectMapper mapper ...
  • Struts2返回JSON对象总结 (转) 转载自 日暮月垂 1.struts.xml中package 中extends="json-default"   2.result 中type="json"                user.id
  • 1.1、单个modle转换,返回json对象: sqlOrder = get_object_or_404(SqlOrder,id=request.GET.get("id")) objJson = serialize('json',[sqlOrder])[1:-1] {"model": "sqlapply.sqlorder", "pk": 2, "fields": {...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,284
精华内容 39,313
关键字:

后台返回json对象