java - 如何在不创建对象的情况下将java类转换为json格式结构
问题描述
我需要记录多个微服务 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));
}
}
实际操作/操作:
{"name":"aa","address":["a","s"]}
所需的o / p:
{"name":"string","address":["string"]}
关注:但我需要在不创建对象的情况下创建,因为实际上 pojo 很大,无法设置所有虚拟数据。
解决方案
你可以使用波达姆
PODAM 是一个轻量级的工具,可以用数据自动填充 Java POJO。这在开发单元测试时很方便。多亏了 PODAM,用户现在有了一个可以完成所有工作的单线。
在您的项目中添加 PODAM 依赖项
<dependency>
<groupId>uk.co.jemos.podam</groupId>
<artifactId>podam</artifactId>
<version>[latest.version]</version>
<!-- <scope>test</scope> -->
</dependency>
DataProviderStrategy
如果您不想要默认值(随机数据),请定义您的- 定义bean,使用数据提供者策略
PodamFactory
初始化 - 在代码中使用
PodamFactory
bean
PodamFactory factory = new PodamFactoryImpl();
MyPojo myPojo = factory.manufacturePojo(MyPojo .class);
// write it as json
System.out.println(new ObjectMapper().writeValueAsString(myPojo));
推荐阅读
- python - 有什么方法可以在python中将unicode文本格式数据正确转换为csv?
- ios - 关闭应用程序并再次打开然后 PopToRootViewController 不能在 swift firebase 中工作
- excel - VBA在列中选择包含相同ID的行,突出显示行,然后继续下一个ID并将ID复制到剪贴板
- purescript - 结合棱镜以专注于一个值,而不考虑分支
- spring - Docker容器中的Spring Integration FTP:不触发流
- socket.io - 如何在 socket.io 中轻松更改房间?
- jquery - Rails 6 (and possible Ajax?) How to add a form question when a certain dropdown selection is selected
- excel - 来自文件夹命名范围问题的 PowerQuery 数据
- html - div 的 HTML 值相互依赖
- vue.js - 单击模态OK按钮时如何从另一个组件提交表单(bootstrap vue)