解决Map序列化成JSON字符串传给前端后属性乱序问题

map序列化成json对象传递给前端时,map中属性的顺序会按首字母重新排序

json对象中的属性没有顺序而言,一次序列化、反序列化就会乱。

试过把map转成了JSON字符串,传给前端,还是不行

JSON.parseObject(JSON.toJSONString(contractsFactorMap),new TypeReference<TreeMap<String, String>>(){} , Feature.OrderedField)

想到数组可以保证顺序,可以把后端的map转成List数组,这样序列化成json不会影响顺序。 

@Service
public class ComponentsContants {

 /** 
  * @description: Map转成List数组 (Map只有一层的情况)
  * @param:  
  * @return:  
  * @author ywx9031
  * @date: 2023/10/7 16:59
  */ 
 public static List<Map<String, Object>> MaptoList(Map map) {
  List<Map<String, Object>> valueList = new ArrayList<Map<String, Object>>();
  Iterator<String> iter = map.keySet().iterator();
  while (iter.hasNext()) {
   String key = iter.next();
   String value = (String) map.get(key);
   Map<String, Object> mapList = new HashMap<String, Object>();
   mapList.put("key", key);
   mapList.put("value", value);
   valueList.add(mapList);
  }
  return valueList;
 }
 /** 
  * @description: Map有2层的情况(Map中还包含map)
  * @param:  
  * @return:  
  * @author ywx9031
  * @date: 2023/11/13 15:45
  */ 
 public static List<Map<String, Object>> MaptoList2(Map map) {
  List<Map<String, Object>> valueList = new ArrayList<Map<String, Object>>();
  List<Map<String, Object>> valueList1 = new ArrayList<Map<String, Object>>();
  Iterator<String> iter = map.keySet().iterator();
  while (iter.hasNext()) {
   String key = iter.next();
   Map<String, Object> mapList = new HashMap<String, Object>();
   mapList.put("key", key);
   Map map1 = (Map) map.get(key);
   Iterator<String> iter1 = map1.keySet().iterator();
   while (iter1.hasNext()) {
    String key1 = iter1.next();
    Map<String, Object> mapList1 = new HashMap<String, Object>();
    mapList1.put("key", key1);
    mapList1.put("value", map1.get(key1));
    valueList1.add(mapList1);
   }
   mapList.put("value", valueList1);
   valueList.add(mapList);
  }
  return valueList;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Go 中,可以使用标准库中的 `encoding/json` 包将 JSON 字符串序列化对应的结构体或者 map 类型。对于一段复杂的 JSON 字符串,可以按照以下步骤进行反序列化操作: 1. 根据 JSON 字符串的格式定义一个对应的 Go 结构体类型,或者使用 map 类型接收 JSON 数据。 例如,如果 JSON 字符串的格式为 `{"name": "Tom", "age": 18, "address": {"city": "Beijing", "street": "Nanluoguxiang"}}`,则可以定义如下的 Go 结构体类型: ```go type Address struct { City string `json:"city"` Street string `json:"street"` } type Person struct { Name string `json:"name"` Age int `json:"age"` Address Address `json:"address"` } ``` 其中,`Address` 结构体嵌套在 `Person` 结构体中,用于描述 `Person` 的地址信息。 2. 将 JSON 字符串字节数组(`[]byte`)。 例如,如果 JSON 字符串为 `{"name": "Tom", "age": 18, "address": {"city": "Beijing", "street": "Nanluoguxiang"}}`,则可以通过 `[]byte(jsonStr)` 将其字节数组。 3. 调用 `json.Unmarshal` 函数将 JSON 字符串序列化到 Go 结构体或者 map 类型中。 例如,可以按照以下方式调用 `json.Unmarshal` 函数进行反序列化操作: ```go var p Person err := json.Unmarshal([]byte(jsonStr), &p) if err != nil { // 处理反序列化失败的错误 } ``` 在调用 `json.Unmarshal` 函数时,第一个参数为要反序列化JSON 字符串所对应的字节数组,第二个参数为一个指向要反序列化到的 Go 结构体对象的指针或者 map 类型对象的指针。在函数执行功后,Go 结构体对象 `p` 或者 map 类型对象就会被赋值为 JSON 字符串所对应的值。 需要注意的是,如果 JSON 字符串中的键值对与 Go 结构体中的字段不匹配,或者 JSON 字符串格式不正确,都有可能导致反序列化失败,此时需要进行错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Evan Yi

老板行行好,打赏一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值