将json转换成LinkedHashmap,全部有序

String jsonStr = "{\"kind\":\"Deployment\",\"metadata.name\":\"nginx-deployment\",\"spec.replicas\":\"3\",\"spec.template.spec.containers\":[{\"name\":\"nginx\",\"image\":\"nginx:1.7.9\",\"ports\":[{\"containerPort\":\"80\"}]},{\"name\":\"nginx\",\"image\":\"nginx:1.7.9\",\"ports\":[{\"containerPort\":\"80\"}]}]}\n";
Map<String, Object> dummyMap =  JSON.parseObject(jsonStr,LinkedHashMap.class, Feature.OrderedField);//关键的地方,转化为有序map
                    将json转换成LinkedHashmap,全部有序String jsonStr = &amp;quot;{\&amp;quot;kind\&amp;quot;:\&amp;quot;Deployment\&amp;quot;,\&amp;quot;metadata.name\&amp;quot;:\&amp;quot;nginx-deployment\&amp;quot;,\&amp;quot;spec.replicas\&amp;quot;:\&amp;quot;3\&amp;quot;,\&amp
LinkedHashMap requestData = new LinkedHashMap();
 LinkedHashMap auth =新的LinkedHashMap();
 auth.put(“ ServiceName”,“ Login”);
 auth.put(“ Username”,“ user”);
 auth.put(“ Password”,“ 123”);
 requestData.put(“ Authentication”,auth);
 JSONObject json = LinkedHashMapHelper.toJSONObject(requestData);
 LinkedHashMapHelper响应= LinkedHashMapHelper.fromJSO
				
在做项目的时候,无意间发现添加到json中的元素是无存放顺序的。严格来说,json默认是有存放顺序的,不过是采用HashCode值来排序。下面来看一段源码 上图展示了创建json对象的一个过程,可以清晰的看出,无论用户调用哪个构造方法,最终都是去执行图片上最后这个构造方法,根据用户传入的第二个参数来决定创建LinkedHashMap对象还是HashMap对象,这就说明了,json底层是一个Map集合,也就解释了为什么json默认存放元素是无序的(其实是有序的,不过按照HashCode排序,跟put顺序无关)。 如有写的不对的地方,敬请指正,感谢! 作者:xioayu96
前提:后端同志在response中返回多种类型, 失败时返回String,成功时返回数据实体用于前端显示。都是用Data字段接收: public class RootBean<T> { private int StatusCode; private T Data; 一、寻找原因 一开始想的很好办嘛,成功时将存有json数据的data转换成实体类就好啦: new Gson().formJson(jsonString,实体类.class) 不料接收的data是
引入类import com.alibaba.fastjson.JSON; 1.Json 字符串换为Map Map<String,Object> biMap= JSON.parseObject(url_param); 2.Json 换为List 或者List<~> 泛型 List<Map> listi = JSON.parseArray(biMap.get("components").toString(),Map.class); 3.Map 换为Json字符串
无意中遇到 给json串重新赋值时,将json换为jsonobject时返回结果顺序乱了 话不多说直接上代码 public String updateJosnStr(String jsonStr) throws JSONException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm...
背景:做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为com.alibaba.fastjson.JSONObject,再化为JSONString,传给接收方,接收方将String换为com.alibaba.fastjson.JSONObject,再反序列化为Map,且接收方需要保持存取顺序一致。 问题:不能将StringJSONObject,再强为LinkedMap,这样编译会报错;也不能将StringJSONArray,再一个一个赋值,组建成LinkedHas..
public class Test { public static void main(String[] args) { String jsonStr = "[{\"name\":\"张三\",\"age\":18},{\"name\":\"李四\",\"age\":20}]"; JSONArray jsonArray = JSON.parseArray(jsonStr); System.out.println(jsonArray); 输出结果为: [{"name":"张三","age":18},{"name":"李四","age":20}] 其中,jsonStr是一个json字符串,包含了两个对象。使用JSON.parseArray方法将json字符串JSONArray对象,再通过JSONArray对象获取list。