需要一些帮助 我有一个Java Rest API,它从一个.net端点获取数据并将其传递给UI。JSON属性是大写的,我想在将其发送至UI之前在JAVA中进行转换。在这方面有什么建议吗?
在java中,我有一个类似下面的类。
public class Person {
@JsonProperty("Name")
private String name;
@JsonProperty("Age")
private int age;
}
我使用@JsonProperty作为键,在.net中是以大写开始的。在Java中,我怎样才能在发送至UI之前将其转换回来?
谢谢大家的帮助!
创建另一个具有相同结构的类,并使用你想要的其他名称。就像这样。
// Class to read .NET object
public class Person {
@JsonProperty("Name")
private String name;
@JsonProperty("Age")
private int age;
}
// Class to represent the object in Java REST API
public class Person {
@JsonProperty("name")
private String name;
@JsonProperty("age")
private int age;
}
// Class to represent the object in Java REST API,
// in case you use some standard library that
// uses property names for JSON as is
public class Person {
private String name;
private int age;
}
当然,你应该把这些类放到不同的包里.
你的代码可以如下所示。
xxx.dotnet.Person dotnetPerson = doSomethingViaDotNet(...);
yyy.rest.Person restPerson = new yyy.rest.Person();
restPerson.setName(dotnetPerson.getName());
restPerson.setAge(dotnetPerson.getAge());
...
return restPerson;
如果你决定使用 地图结构你的代码可能如下。
@Mapper
public interface PersonMapper {
PersonMapper INSTANCE = Mappers.getMapper( PersonMapper.class );
yyy.rest.Person dotnetToRest(xxx.dotnet.Person dotnetPerson);
}
由于所有的属性都有相同的名称和类型 你不需要在你的映射器中添加任何其他的东西。
MapStruct会生成一个实现这个接口的类。其用法如下。
restPerson = PersonMapper.INSTANCE.dotnetToRest(dotnetPerson);