java的Map与前端json对象的交互

您所在的位置:网站首页 后端向前端传递数据是什么 java的Map与前端json对象的交互

java的Map与前端json对象的交互

2023-10-03 05:24| 来源: 网络整理| 查看: 265

一、后端java程序中的应用

1、Map转换成JSON Map map = new HashMap();  map.put("a","aaa");  map.put("b","bbb");  map.put("c","ccc");  String json=JSON.toJSONString(map);  System.out.println(json);//输出{"a":"aaa","b":"bbb","c":"ccc"}

2、JSON转换成Map

Map map1 = JSON.parseObject(json); System.out.println(map1.get("a")); for (Object mapData : map.entrySet()) { Map.Entry entry = (Map.Entry)mapData; System.out.println(entry.getKey()+"--->"+entry.getValue()); } /*输出 b--->bbb c--->ccc a--->aaa */

3、map中含有对象Map -> JSON

//Map -> JSON Map map = new HashMap();  map.put("a",new Bar());  map.put("b",new Bar());  map.put("c",new Bar());  String json = JSON.toJSONString(map,true);  System.out.println(json);  /* 输出{     "a":{         "barAge":383687382,         "barDate":1494945882018,         "barName":"name_1689176802"     },     "b":{         "barAge":-100528778,         "barDate":1494945882018,         "barName":"name_-878176366"     },     "c":{         "barAge":-344075192,         "barDate":1494945882018,         "barName":"name_-1710740534"     } } */  

二、toJSONString(fastjson)的json字符串的排序问题

这一小节的原文链接:https://blog.csdn.net/u011410529/article/details/50235883 

fastjson在封装成json的时候会自动按照属性名称排序,也就是abcd…的顺序排序。 

但是很多时候,我们可能需要json有一定的顺序,且按照我们的顺序,好了,让我们来看看如何。  首先:写一个实体类,用于转化成json用

package com.dzy.fastjson;

public class Letter {

    private Long id;

    private String name;

    private String app;

    public Long getId() {         return id;     }

    public void setId(Long id) {         this.id = id;     }

    public String getName() {         return name;     }

    public void setName(String name) {         this.name = name;     }

    public String getApp() {         return app;     }

    public void setApp(String app) {         this.app = app;     }

} 然后我们如果不给任何排序规则的时候测试:

package com.dzy.fastjson;

import java.util.ArrayList; import java.util.List;

import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject;

public class JsonShunxu{

    public static void main(String[] args) {         List list=new ArrayList();         JSONArray js=new JSONArray();

        Letter le_solo=new Letter();         le_solo.setId(1l);         le_solo.setName("小明");         le_solo.setApp("my APP");         System.out.println(JSON.toJSONString(le_solo));         System.out.println("------------------------------");         for (int i = 0; i < 5; i++) {             le_solo.setId(3l);             le_solo.setName("小明"+i);             le_solo.setApp("my APP"+i);             list.add(le_solo);         }

        System.out.println(JSON.toJSONString(list));

    } }

我们看到的顺序是按照a-》i-》n的顺序来的,但是不符合我们的要求

 

这里根据fastjson的官方文档发现,需要改变JSONField参数  下面给出3种方法:  1、可以通过ordinal指定字段的顺序。这个特性需要1.1.42以上版本。 

 

如果上面一种方法不行,或者没有达到你的要求,那么下面的也可以了  也可以人为改变json串的名称

     @JSONField(name="b")     private Long id;

     @JSONField(name="c")     private String name;

     @JSONField(name="a")     private String app; 这样排序出来就是这样的效果 

 

 

三、以ajax传递回前端后,前端可能会用到json的解析问题;

1、传递回前端直接已经被解析为json对象时,不需要解析,可以直接用。

比如下例中的data

$.ajax({ type: "post", url: "${ctx}/sys/user/getEnablePoint", async: false, dataType: "json", success: function (data) { if(!$.isEmptyObject(data)) { if(data.isGroup == "True") { isAll = "True"; } else if(data.isGroup == "False") { isAll = "False"; farmList = data.lfarmIds; } } }, error: function(data) { alert("未获取到当前登录用户的信息!"); } })

 

2、需要解析时,推荐方法:

JSON.parse()

特点:主流,兼容性好,推荐

格式:

JSON.parse(text [, reviver])

参数

text

必需。 一个有效的 JSON 字符串。

reviver

可选。 一个转换结果的函数。 将为对象的每个成员调用此函数。 如果成员包含嵌套对象,则先于父对象转换嵌套对象。 对于每个成员,会发生以下情况:

如果 reviver 返回一个有效值,则成员值将替换为转换后的值。

如果 reviver 返回它接收的相同值,则不修改成员值。

如果 reviver 返回 null 或 undefined,则删除成员。

返回值

一个对象或数组。

异常

以下示例使用 JSON.parse 将 JSON 字符串转换成对象。

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';  var contact = JSON.parse(jsontext);  document.write(contact.surname + ", " + contact.firstname);    // Output: Aaberg, Jesper

 

备注:json.stringify()和json.parse()的区别

json.stringfy()将对象、数组转换成字符串;json.parse()将字符串转成json对象。

 

 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3