51,409
社区成员
发帖
与我相关
我的任务
分享String text = "{\"text\":[{\"RegisterCount\":13, \"DateID\":43604}, {\"RegisterCount\":65, \"DateID\":43605}, { \"DateID\":43606}]}";
JSONObject json = JSONObject.parseObject(text);
List list = json.getJSONArray("text");
for(int i=0;i<list.size();i++){
JSONObject jvo = (JSONObject) list.get(i);
String dateID = jvo.getString("DateID");
//处理后dateID
dateID=i+"处理逻辑追中值";
jvo.put("DateID", dateID);
//处理后registerCount
if(!jvo.containsKey("RegisterCount")){
jvo.put("RegisterCount", 0);
}
}
String result = JSONArray.toJSON(list).toString();
System.out.println("字符串输出转换后的值"+result);
package com.sejta.springboot.solutions;
import lombok.ToString;
import org.omg.CORBA.DATA_CONVERSION;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
public class Resolve {
@ToString
class RegisterDates{
public RegisterDates(int registerCount, int dateID) {
RegisterCount = registerCount;
DateID = dateID;
}
public RegisterDates(String date) {
Date = date;
}
int RegisterCount;
int DateID;
String Date;
}
public List<RegisterDates> getConvert() throws ParseException {
/**
* 这是你的原始数据,这里随便填两条
*/
List<RegisterDates> lists=new ArrayList<>();
lists.add(new RegisterDates(13,43604));
lists.add(new RegisterDates(65,43605));
lists.add(new RegisterDates(17,43606));
lists.add(new RegisterDates(19,43607));
/**
* 这是你dateID转String的对照表 ,比如 43604 - > 2019-05-01
* 随便填几条
*/
Map<String,Integer> convert=new HashMap();
convert.put("2019-05-01",43604);
convert.put("2019-05-02",43605);
convert.put("2019-05-03",43606);
convert.put("2019-05-04",43607);
/**
* 这是最后要的结果,我怎么才能塞那么多值进去呢
*/
List<RegisterDates> dateList=new ArrayList<>();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date start=sdf.parse("2019-05-01");
Calendar calendar=Calendar.getInstance();
calendar.setTime(start);
while (calendar.getTime().getTime()<(new Date()).getTime()){
dateList.add(new RegisterDates(sdf.format(calendar.getTime())));
calendar.add(Calendar.DATE,1);
}
return dateList.stream().map(registerDates -> {
String tmpDate=registerDates.Date;
if(convert.containsKey(tmpDate)) {
int dateId = convert.get(tmpDate);
lists.stream().forEach(registerDates1 -> {
if (dateId == registerDates1.DateID) {
registerDates.RegisterCount = registerDates1.RegisterCount;
registerDates.DateID = registerDates1.DateID;
return;
}
});
}else{
registerDates.RegisterCount=0;
}
return registerDates;
}).collect(Collectors.toList());
}
public static void main(String[] args) throws ParseException {
Resolve r=new Resolve();
System.out.println(r.getConvert());
}
}
那个LomBok 你要是没有就去掉,@ToString只是我最后测试打数据用的