JAVA对JSON字符串进行时间排序

[{
	"BEGDA": "0000-00-00",
	"ENDDA": "0000-00-00",
	"PERNR": "00000000",
	"USRID": "",
	"USRTY": ""
}, {
	"BEGDA": "2019-04-15",
	"ENDDA": "9999-12-31",
	"PERNR": "",
	"USRID": "17666294051",
	"USRTY": "MPHN"
}, {
	"BEGDA": "2020-01-01",
	"ENDDA": "9999-12-31",
	"PERNR": "10004398",
	"USRID": "12345678",
	"USRTY": "MAIL"
}, {
	"BEGDA": "2019-04-15",
	"ENDDA": "9999-12-31",
	"PERNR": "",
	"USRID": "17666294051",
	"USRTY": "MPHN"
}, {
	"BEGDA": "2020-01-01",
	"ENDDA": "9999-12-31",
	"PERNR": "",
	"USRID": "12345678",
	"USRTY": "MAIL"
}]

先看一下这端JSON格式,怎么弄得呢?字符串JSON,我怎么toString直接就可以生成JSON字符串呢?

	 


    //这个加到你JAVA类里面,this指针,指向自身类,然后你调用这个类接受数据库查询或者调用webservice回调得结果,都可以直接toString拿到JSON字符串
        @Override
		public String toString() {
			return JSONObject.fromObject(this).toString();
		}

 

 

需求是我们将以BEGDA排序,怎么排呢?

package com.sap.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

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

public class JsonArraySortOrderByDate {
	 /**
     * 按照JSONArray中的对象的某个字段进行排序(采用fastJson)
     * @param jsonArrStr json数组字符串
     * 
     * @param jsonArrStr keyName变量
     * 
     */
    public  String JsonOrderByDate(String jsonArrStr) {
        JSONArray jsonArr = JSON.parseArray(jsonArrStr);
        JSONArray sortedJsonArray = new JSONArray();
        List<JSONObject> jsonValues = new ArrayList<JSONObject>();
        for (int i = 0; i < jsonArr.size(); i++) {
            jsonValues.add(jsonArr.getJSONObject(i));
        }
        Collections.sort(jsonValues, new Comparator<JSONObject>() {
          private final String KEY_NAME = "ZXJRQ";
            String string1;
            String string2;
            @Override
            public int compare(JSONObject a, JSONObject b) {
        try {
                     string1= a.getString(KEY_NAME).replaceAll("-", "");
                     string2= b.getString(KEY_NAME).replaceAll("-", "");
                } catch (JSONException e) {
                    // 处理异常
                }
                    //这里是按照时间逆序排列,不加负号为正序排列
                return -string1.compareTo(string2);
            }
        });
        for (int i = 0; i < jsonArr.size(); i++) {
            sortedJsonArray.add(jsonValues.get(i));
        }
        return sortedJsonArray.toString();
    }
}

这一段,已经很明白了,假设你要联合排得话,将改造一下 

 

未结束~~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中,可以使用 Gson 库将字符串换成 JSON 对象,然后按照指定的 key 进行排序,示例代码如下: ```java import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import java.util.*; public class JsonSorter { public static void main(String[] args) { // 原始 JSON 字符串 String jsonString = "{\"name\":\"Tom\",\"age\":18,\"gender\":\"male\"}"; // 将 JSON 字符串换成 JSON 对象 JsonParser jsonParser = new JsonParser(); JsonElement jsonElement = jsonParser.parse(jsonString); JsonObject jsonObject = jsonElement.getAsJsonObject(); // 将 JSON 对象的 key 存入 List 中并排序 List<String> keys = new ArrayList<String>(); for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) { keys.add(entry.getKey()); } Collections.sort(keys); // 根据排序后的 key 重新构建 JSON 对象 JsonObject sortedJsonObject = new JsonObject(); for (String key : keys) { sortedJsonObject.add(key, jsonObject.get(key)); } // 将排序后的 JSON 对象换成字符串 Gson gson = new Gson(); String sortedJsonString = gson.toJson(sortedJsonObject); System.out.println(sortedJsonString); // 输出:{"age":18,"gender":"male","name":"Tom"} } } ``` 在上面的示例代码中,首先将原始的 JSON 字符串换成 JSON 对象,然后将 JSON 对象的 key 存入 List 中并排序,最后根据排序后的 key 重新构建 JSON 对象,并将其换成字符串。注意,这里使用了 Gson 库来进行 JSON 对象和字符串之间的换。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值