我需要记录多个微服务api调用,所以我有一个问题,如何直接从java pojo类中创建json字符串。我的意思是说,例如,
MyPojo.java
public class MyPojo {
String name;
List<String> address;
public MyPojo() {
// TODO Auto-generated constructor stub
}
//setters and getters
}
现在我需要pojo的字符串json结构而不创建类的对象。可能与swagger api在Web UI中创建@RequestBody对象的json结构的方式相同。
类似:
String jsonStruct=SomeUtil.convertPojoToJson(MyPojo.class)
然后它应该给出:
{"name":"string","address":[]}
我的尝试:
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.core.converter.ModelConverters;
import io.swagger.v3.core.util.Json;
import io.swagger.v3.oas.models.media.Schema;
public class TEst {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper obj = new ObjectMapper();
MyPojo o=new MyPojo();
o.setName("aa");
List<String> l=Arrays.asList("a","s");
o.setAddress(l);
System.out.println(obj.writeValueAsString(o));
}
}
实际o / p:
{"name":"aa","address":["a","s"]}
必需的o / p:
{"name":"string","address":["string"]}
CONCERN:但是我需要创建而不创建对象,因为实际上pojo很大,无法设置所有虚拟数据。
您可以使用Podam
PODAM是一种轻量级的工具,可以用数据自动填充Java POJO。这个在进行单元测试时非常方便。多亏了PODAM,用户现在有了一线完成所有工作。
在项目中添加PODAM依赖项
<dependency>
<groupId>uk.co.jemos.podam</groupId>
<artifactId>podam</artifactId>
<version>[latest.version]</version>
<!-- <scope>test</scope> -->
</dependency>
PodamFactory
bean,用数据提供者策略]初始化] >>PodamFactory
bean PodamFactory factory = new PodamFactoryImpl();
MyPojo myPojo = factory.manufacturePojo(MyPojo .class);
// write it as json
System.out.println(new ObjectMapper().writeValueAsString(myPojo));