.net json属性在java中的转换--@JsonProperty。

问题描述 投票:0回答:1

需要一些帮助 我有一个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之前将其转换回来?

谢谢大家的帮助!

java .net json rest annotations
1个回答
1
投票

创建另一个具有相同结构的类,并使用你想要的其他名称。就像这样。

// 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);
© www.soinside.com 2019 - 2024. All rights reserved.