首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >apache camel使用简单的

apache camel使用简单的
EN

Stack Overflow用户
提问于 2021-11-26 07:58:38
回答 1查看 147关注 0票数 1

如何使用apache在JSON中减少尾随空间。我在下面的输入中的名字字段中有尾随空格。

我正在使用下面的一行来修剪空白,但是没有任何东西被修剪过。

代码语言:javascript
运行
复制
                   <setBody>
                     <simple trim="true">${body}</simple>
                   </setBody>

Body

代码语言:javascript
运行
复制
{
    "primaryRelationOfficer": 0,
    "dedupReq": true,
    "blackListReq": false,
    "dedup": [
        {
            "cif": "12345",
            "categoryCode": "RETAIL",
            "defaultBranch": "BQA",
            "firstName": "SARTHU  ",
            "lastName": " DEVA",
            "shortName ": "UTTAM MONDAL",
            "dateofBirth": "1980-10-20T00:00:00",
            "custPAN": "",
            "sector ": "MANF"
        },
        {
            "cif": "2345",
            "categoryCode": "RETAIL",
            "defaultBranch": "SID",
            "firstName": "GADDAM     ",
            "lastName": "DEVENDRA         ",
            "shortName ": "GADDAM DEVENDRA",
            "dateofBirth": "1980-10-20T00:00:00",
            "custPAN": "",
            "sector ": "MANF"
        }
        ]
}       
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-27 01:45:14

如何使用apache在JSON中减少尾随空间。我在下面的输入中的名字字段中有尾随空格。

您没有提到是否需要从值中删除尾随空格,所以我也添加了这一点,以防您需要它。一个可能的解决办法是:

  • 将json字符串转换为POJO
  • ,从值
  • 中移除尾随空格,将POJO转换回json字符串

下面是简单的测试用例:

代码语言:javascript
运行
复制
class CamelRouteTest extends CamelTestSupport {

private static final String JSON = "{\n" +
        "  \"primaryRelationOfficer\": 0,\n" +
        "  \"dedupReq\": true,\n" +
        "  \"blackListReq\": false,\n" +
        "  \"dedup\": [\n" +
        "    {\n" +
        "      \"cif\": \"12345\",\n" +
        "      \"categoryCode\": \"RETAIL\",\n" +
        "      \"defaultBranch\": \"BQA\",\n" +
        "      \"firstName\": \"SARTHU  \",\n" +
        "      \"lastName\": \" DEVA\",\n" +
        "      \"shortName \": \"UTTAM MONDAL\",\n" +
        "      \"dateofBirth\": \"1980-10-20T00:00:00\",\n" +
        "      \"custPAN\": \"\",\n" +
        "      \"sector \": \"MANF\"\n" +
        "    },\n" +
        "    {\n" +
        "      \"cif\": \"2345\",\n" +
        "      \"categoryCode\": \"RETAIL\",\n" +
        "      \"defaultBranch\": \"SID\",\n" +
        "      \"firstName\": \"GADDAM     \",\n" +
        "      \"lastName\": \"DEVENDRA         \",\n" +
        "      \"shortName \": \"GADDAM DEVENDRA\",\n" +
        "      \"dateofBirth\": \"1980-10-20T00:00:00\",\n" +
        "      \"custPAN\": \"\",\n" +
        "      \"sector \": \"MANF\"\n" +
        "    }\n" +
        "  ]\n" +
        "}";

@Produce("direct:start")
protected ProducerTemplate start;

@Test
void start() {
    start.sendBody(JSON);
}

@Override
protected RoutesBuilder createRouteBuilder() throws Exception {
    return new RouteBuilder() {
        @Override
        public void configure() throws Exception {
            from("direct:start")
                    .unmarshal(new GsonDataFormat(GSON, Profile .class))
                    .marshal(new GsonDataFormat())
                    .log("Got ${body}");
        }
    };
}

//If trimming whitespaces in values is not needed - remove everything below
private static final Gson GSON = new GsonBuilder()
        .registerTypeAdapter(String.class, new StringTrimJsonDeserializer())
        .create();

private static class StringTrimJsonDeserializer implements JsonDeserializer<String> {
    @Override
    public String deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
        final String value = jsonElement.getAsString();
        return value == null ? null : value.trim();
    }
}

}

配置文件

代码语言:javascript
运行
复制
public class Profile {
  private int primaryRelationOfficer;
  private boolean dedupReq;
  private boolean blackListReq;
  private List<Dedup> dedup;
  //getters setters
}

德达普

代码语言:javascript
运行
复制
public class Dedup {
  private String cif;
  private String categoryCode;
  private String defaultBranch;
  private String firstName;
  private String lastName;
  private String shortName;
  private String dateofBirth;
  private String custPAN;
  private String sector;
  //getters setters
}

将POJO转换为json后的输出:

代码语言:javascript
运行
复制
Got {"primaryRelationOfficer":0,"dedupReq":true,"blackListReq":false,"dedup":[{"cif":"12345","categoryCode":"RETAIL","defaultBranch":"BQA","firstName":"SARTHU","lastName":"DEVA","dateofBirth":"1980-10-20T00:00:00","custPAN":""},{"cif":"2345","categoryCode":"RETAIL","defaultBranch":"SID","firstName":"GADDAM","lastName":"DEVENDRA","dateofBirth":"1980-10-20T00:00:00","custPAN":""}]}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70121130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档