java 如何使用Jackson创建嵌套JSON?

piah890a  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(177)

我正尝试在现有JSON中添加BusinessInformation数据。

{
    "Original": "Web Form",
    "SubmitterNetworkName": "null",
    "SourceName": "Contact Request Form",
    "SourceKind": "Web Form",

**    "BusinessInformation": {
        "BusinessContactName": null,
        “AccountNumber”:null,
    },**

    "EmployeeName": null,
    "EmployeeDOB": null,
}

我有一个Spring Batch应用程序,它可以将数据从一个数据库导出到另一个数据库,在运行期间,需要创建一些Map多列的JSON。我主要使用lombok和jackson来创建JSON。
我有一个模型示例。我还尝试创建BusinessInformation类。

package model

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@JsonIgnoreProperties(ignoreUnknown = true)
public class ColumnNameForTheDBImImportingTo implements Serializable {

    @JsonProperty("Origin")
    private String Origin;

    and so on..

}

然后我有服务。

import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
import twc.batch.extcbk.model.*;
import java.io.IOException;

@Component
@Slf4j
public class ColumnNameForTheDBImImportingToService {
        
    private ColumnNameForTheDBImImportingTo columnNameForTheDBImImportingTo (some codes) {
      
        ColumnNameForTheDBImImportingTo columnNameForTheDBImImportingTo = ColumnNameForTheDBImImportingTo .builder().build();

        columnNameForTheDBImImportingTo.setOrigin("Web Form");
}

**Then I have a method for the object mapper.**

    private String getColumnNameForTheDBImImportingTo (ColumnNameForTheDBImImportingTo columnNameForTheDBImImportingTo ) {
        String columnNameForTheDBImImportingToStr = null;

        try {
            ObjectMapper mapper = new ObjectMapper();
            columnNameForTheDBImImportingToStr = mapper.writeValueAsString(columnNameForTheDBImImportingTo );

            log.debug("columnNameForTheDBImImportingToStr {}", columnNameForTheDBImImportingToStr );

        } catch (IOException e) {
            log.error("getColumnNameForTheDBImImportingTo " + e.getMessage());

        }
        return columnNameForTheDBImImportingToStr ;
    }

**Then another class builds the db columns and sets the values.**

我试过跟着Baeldung但是我不太明白。
我尝试为业务信息创建一个新类,并考虑将其插入到ColumnNameForTheDBImportingTo中。
请向我提供任何有用的信息,我可以遵循这个问题。
谢谢!

qxsslcnc

qxsslcnc1#

数据转换是项处理器的典型用例。
我将使用Spring Batch实现这一点的方法是配置一个面向块的步骤,定义如下:

  • 用于读取输入文件的JsonItemReader
  • 添加业务信息的项目处理器
  • 用于写入输出文件的JsonItemWriter

相关问题