1、使用阿里的FastJson
1.1、pom依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
1.2、示例代码
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.example.demo.exception.ApiResult;
import com.example.springcloudstudyquartz.beans.QuartzEntity;
import com.example.springcloudstudyquartz.service.IJobAndTriggerService;
import com.example.springcloudstudyquartz.service.QuartzService;
import com.example.springcloudstudyquartz.util.QuartzUtil;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value = "/job")
public class JobCronController {
@Autowired
private IJobAndTriggerService iJobAndTriggerService;
@Autowired
private QuartzService quartzService;
@RequestMapping("/addJob")
public ApiResult addJob(@RequestBody QuartzEntity quartzEntity) {
// bean转json字符串
String jsonStr = JSON.toJSONString(quartzEntity);
log.info("入参bean转json字符串(未格式化):{}", jsonStr);
// 将bean 转化为格式化后的json字符串
String pretty1 = JSON.toJSONString(quartzEntity, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteDateUseDateFormat);
log.info("入参bean转json字符串(格式化后):{}", pretty1);
// 将未格式化的json字符串 转为格式化后的json字符串
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
String pretty2 = JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteDateUseDateFormat);
log.info("入参json字符串(格式化后):{}", pretty2);
String jobClassName = quartzEntity.getJobClassName();
String jobName = quartzEntity.getJobName();
String jobGroup = quartzEntity.getJobGroup();
String cronExpression = quartzEntity.getCronExpression();
Job aClass = QuartzUtil.getClass(jobClassName);
// 添加定时任务
quartzService.addJob(aClass.getClass(),jobName,jobGroup,cronExpression);
// 返回结果
return ApiResult.success(quartzEntity);
}
}
1.3、格式化输出后的结果:
说明: FastJson通过Tab键进行换行后的格式化.
2、使用谷歌的Gson
2.1、pom依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
2.2、示例代码
public static void main(String[] args) {
String jsonString = "{\"_index\":\"book_shop\",\"_type\":\"it_book\",\"_id\":\"1\",\"_score\":1.0," +
"\"_source\":{\"name\": \"Java编程思想(第4版)\",\"author\": \"[美] Bruce Eckel\",\"category\": \"编程语言\"," +
"\"price\": 109.0,\"publisher\": \"机械工业出版社\",\"date\": \"2007-06-01\",\"tags\": [ \"Java\", \"编程语言\" ]}}";
String pretty = toPrettyFormat(jsonString)
System.out.println(pretty);
}
/**
* 格式化输出JSON字符串
* @return 格式化后的JSON字符串
*/
private static String toPrettyFormat(String json) {
JsonParser jsonParser = new JsonParser();
JsonObject jsonObject = jsonParser.parse(json).getAsJsonObject();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
return gson.toJson(jsonObject);
}
2.3、格式化输出后的结果:
{
"_index": "book_shop",
"_type": "it_book",
"_id": "1",
"_score": 1.0,
"_source": {
"name": "Java编程思想(第4版)",
"author": "[美] Bruce Eckel",
"category": "编程语言",
"price": 109.0,
"publisher": "机械工业出版社",
"date": "2007-06-01",
"tags": [
"Java",
"编程语言"
]
}
}