Json字符串作为与外部.java文件相对应的输出

Json字符串作为与外部.java文件相对应的输出,java,json,Java,Json,我有一个外部.java文件,它有以下字段 public class PersonDetails { private String firstName; private String lastName; private Integer hobby; private List<String> address; private Map<String, BigDecimal> salary; private String[] p

我有一个外部.java文件,它有以下字段

public class PersonDetails {
    private String firstName;
    private String lastName;
    private Integer hobby;  
    private List<String> address;
    private Map<String, BigDecimal> salary;
    private String[] position; 
}
但根据每个字段的数据类型,我希望json字符串如下所示

{
    "firstName":"",
    "lastName":"",
    "address":[],
    "position":[],   
    "salary": {},
    "hobby": 1
}

有人能帮我吗?

有更简单的方法来创建表示对象数据的JSON字符串。看看杰克逊或格森。这些库将自动执行您现在正在执行的操作

看起来您正在使用Spring创建RESTAPI。所以它变得更容易。Spring还使用Jackson创建响应实体的JSON或XML表示。(在本例中为ResponseMessage)因此,理论上,您可以执行以下操作:

@PostMapping(value = "/poc/jsobj", produces = {APPLICATION_JSON_VALUE})
public ResponseEntity<PersonDetails> convertToJson(@RequestParam("file") MultipartFile file) {
    try {
        if (!file.isEmpty()) {
            ObjectMapper mapper = new ObjectMapper();
            PersonDetails personDetails = mapper.readValue(file.getBytes(), PersonDetails.class)
            return ResponseEntity.status(HttpStatus.OK).body(personDetails);
        }
    } catch (Exception e) { // Please never ever catch all exceptions. I think in this case you want to catch an IOException?
        String error = "Could not get the file: " + file.getOriginalFilename() + "!";
        return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED);
    }
}
@PostMapping(value=“/poc/jsobj”,products={APPLICATION\u JSON\u value})
公共响应属性convertToJson(@RequestParam(“文件”)多部分文件){
试一试{
如果(!file.isEmpty()){
ObjectMapper mapper=新的ObjectMapper();
PersonDetails PersonDetails=mapper.readValue(file.getBytes(),PersonDetails.class)
返回ResponseEntity.status(HttpStatus.OK).body(personDetails);
}
}catch(Exception e){//请永远不要捕获所有异常。我想在这种情况下,您想要捕获一个IOException吗?
String error=“无法获取文件:“+file.getOriginalFilename()+”!”;
返回响应状态(HttpStatus.EXPECTATION\u失败);
}
}

现在,对
*/poc/jsobj
的请求包含一个JSON对象的响应。

我认为“嗜好”:违反了JSON标准。我已经为此修改了预期的输出,但这里类PersonDetails不是项目的一部分。。。它的外部.java文件…那么我如何在这里使用它?PersonDetails PersonDetails=mapper.readValue(file.getBytes(),PersonDetails.class)?将它放在项目中。或者再次创建相同的类。使用类使生活更加轻松。输入文件可能会有所不同。。有时是PersonDetails.java,有时是employee、java或任何扩展名为.java的东西。。我想将任何input.java文件转换成相应的json字符串……您能提供一些关于多部分文件内容的信息吗?其中的数据是如何格式化的?多部分文件只是.java文件。在上面的示例中,它包含公共类PersonDetails{private String firstName;private String lastName;private Integer hobby;private List address;private Map salary;private String[]position;}
{
    "firstName":"",
    "lastName":"",
    "address":[],
    "position":[],   
    "salary": {},
    "hobby": 1
}
@PostMapping(value = "/poc/jsobj", produces = {APPLICATION_JSON_VALUE})
public ResponseEntity<PersonDetails> convertToJson(@RequestParam("file") MultipartFile file) {
    try {
        if (!file.isEmpty()) {
            ObjectMapper mapper = new ObjectMapper();
            PersonDetails personDetails = mapper.readValue(file.getBytes(), PersonDetails.class)
            return ResponseEntity.status(HttpStatus.OK).body(personDetails);
        }
    } catch (Exception e) { // Please never ever catch all exceptions. I think in this case you want to catch an IOException?
        String error = "Could not get the file: " + file.getOriginalFilename() + "!";
        return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED);
    }
}