jackson 相关问题

Jackson是一个Java库,用于处理读取和写入(解析/生成)以及与Java对象之间的数据绑定等任务。虽然Jackson主要用于JSON,但它还支持许多其他数据格式,如Avro,CBOR,CSV,Java Properties,Protobuf,Smile,XML和YAML。

Jackson:仅序列化标记的字段

我正在尝试做一些在 gson 中非常简单的事情。自从我改用 Jackson 作为序列化器后,我不知道如何实现它: 我只想序列化已被标记的字段...

回答 4 投票 0

Spring API 返回 XML 而不是 JSON

我有两个 Spring Boot 项目 - A(带有 API 的主要较大项目)和 B(由 A 作为 pom.xml 中的依赖项导入的库) 项目B的pom.xml: 我有两个 Spring Boot 项目 - A(带有 API 的主要较大项目)和 B(由 A 作为 pom.xml 中的依赖项导入的库) 项目B的pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>com.b.root</groupId> <artifactId>b</artifactId> <version>0.0.1</version> <packaging>jar</packaging> <name>b</name> <description>Importable Jar</description> <properties> <java.version>11</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <oauth2.version>2.1.1.RELEASE</oauth2.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> <!-- Removing dependency for the embedded Tomcat --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> <!-- End --> </exclusions> </dependency> <!-- asynchronous loggers --> <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.4.2</version> </dependency> <!-- Actuator --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- end --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <exclusions> <exclusion> <groupId>org.skyscreamer</groupId> <artifactId>jsonassert</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.security.oauth.boot</groupId> <artifactId>spring-security-oauth2-autoconfigure</artifactId> <version>${oauth2.version}</version> </dependency> <!-- docusign dependencies --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <dependency> <groupId>javax.persistence</groupId> <artifactId>javax.persistence-api</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.6</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.9.8</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <goals> <goal>jar</goal> </goals> <phase>package</phase> <configuration> <!--to be imported on other projects--> <classifier>b-classifier</classifier> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <skipTests>false</skipTests> <testFailureIgnore>true</testFailureIgnore> <forkMode>once</forkMode> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <forceJavacCompilerUse>true</forceJavacCompilerUse> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> <resources> <resource> <directory>src/main/java</directory> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> </resource> <resource> <directory>src/test/java</directory> <filtering>false</filtering> </resource> </resources> </build> </project> 项目A的pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.a.root</groupId> <artifactId>a</artifactId> <version>0.0.1-SNAPSHOT</version> <name>a</name> <description>Project A</description> <properties> <java.version>11</java.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <!-- Springboot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- JUnit --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <!-- PostgreSQL --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> </dependency> <!-- https://mvnrepository.com/artifact/org.openapitools/jackson-databind-nullable --> <dependency> <groupId>org.openapitools</groupId> <artifactId>jackson-databind-nullable</artifactId> <version>0.2.1</version> </dependency> <!-- https://mvnrepository.com/artifact/ch.qos.logback.contrib/logback-json-classic --> <dependency> <groupId>ch.qos.logback.contrib</groupId> <artifactId>logback-json-classic</artifactId> <version>0.1.5</version> </dependency> <!-- https://mvnrepository.com/artifact/ch.qos.logback.contrib/logback-jackson --> <dependency> <groupId>ch.qos.logback.contrib</groupId> <artifactId>logback-jackson</artifactId> <version>0.1.5</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.everit.json</groupId> <artifactId>org.everit.json.schema</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.3.1.Final</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.3.1.Final</version> </dependency> <dependency> <groupId>com.nimbusds</groupId> <artifactId>nimbus-jose-jwt</artifactId> <version>9.0.1</version> </dependency> <dependency> <groupId>org.passay</groupId> <artifactId>passay</artifactId> <version>1.6.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <!-- Importing library b --> <dependency> <groupId>com.b.root</groupId> <artifactId>b</artifactId> <version>0.0.1</version> <classifier>b-classifier</classifier> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 项目A中有返回JSON对象的API。但在集成测试中,它们以 XML 格式返回数据,导致它们失败。仅当在 A 中使用库 B 时才会发生这种情况。如果我们从 A 中删除 B,那么所有测试都会通过。 这是错误消息: org.json.JSONException: Unparsable JSON string: <ResponseDTO>.....</ResponseDTO> 我的猜测是两个项目的依赖关系存在某种冲突。但无法准确指出哪个依赖项。 我的猜测是,由于 spring 使用 jackson 将返回对象转换为 json 并且项目 B 中存在依赖项,因此它可能与此库具体有关: <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.9.8</version> </dependency> 但我无法理解这会产生什么影响。如果需要更多信息,请告诉我。 编辑1:添加控制器代码: TestDTO.java @Data // lombok annotation public class TestDTO { @JsonProperty(value = "id") @JsonSetter(nulls = Nulls.AS_EMPTY) private String id; @JsonProperty(value = "name") @JsonSetter(nulls = Nulls.AS_EMPTY) private String name; } TestController.java @RestController public class TestController { @Autowired private final TestService testService; @GetMapping("/test/:id") public TestDTO get(@PathVariable String id) { return testService.get(id); } } **编辑2:**添加了请求响应标头 请求 HTTP Method = GET Request URI = /test/1 Parameters = {} Headers = [Content-Type:"application/json", Content-Length:"616"] Body = <no character encoding set> Session Attrs = {} 回复 Status = 200 Error message = null Headers = [Content-Type:"application/xml;charset=UTF-8"] Content type = application/xml;charset=UTF-8 Body = <TestDTO>...</TestDTO> 可能是这样,因为 Spring Boot 通过依赖项 B 获取 xml 解析库。 我可以在映射中定义 Produce 属性,或者配置 WebMvcConfigurer 将 json 设置为默认类型。 为此,请在某处添加 WebMvcConfigurer。即使依赖 B 也应该没问题,如果它运行在同一个 Spring 上下文中。这是针对 Spring Boot 2.4.2 的: @Bean public WebMvcConfigurer customConfigurer() { return new WebMvcConfigurer() { @Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { configurer.defaultContentType(MediaType.APPLICATION_JSON); } }; } 我已经删除了以下依赖项 <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.9.8</version> </dependency> 从我的项目开始,它就可以工作了。我想如果我们添加这个依赖项 spring 会自动将 repose 转换为 xml

回答 2 投票 0

如何将JSON字符串转换为Java对象的List?

这是我的 JSON 数组:- [ { “名字”:“abc”, “姓氏”:“xyz” }, { “名字”:“pqr”, “姓氏”:“str” } ] 我的字符串中有这个

回答 11 投票 0

使用转义属性将 JSON 转为 Java 对象反序列化

我需要将以下 JSON 转换为 Java 对象。 JSON 中的属性providerResponse 包含属性映射,但它们被转义并用双引号括起来。结果,它不

回答 3 投票 0

如何在 Jackson CsvMapper 中替换每个逗号的小数点?

我有这个问题,现在我没有找到任何解决方案。 我正在使用 Jackson 库通过 Spring boot 端点生成 CSV 文件。除了小数分隔符之外,一切正常。通过

回答 1 投票 0

Spring JMS MappingJackson2MessageConverter - 无法处理错误

我正在使用 Spring JMS,并且我正在使用 MappingJackson2MessageConverter 在各个组件之间传递消息。 我的核心问题是,当 MappingJackson2MessageConverter 经历...

回答 1 投票 0

运行测试时 Scala 项目上的 Jackson Databind 版本错误

我在我的 Play Framework 应用程序项目中突然遇到了一个奇怪的错误。直到昨天,我的 sbt 测试运行良好,但现在因运行中止而失败。唯一的区别

回答 1 投票 0

Springboot Jackson 验证与 Validated 注释不起作用

我有这个API控制器接口: ResponseEntity内部(@RequestBody @Validated MassPostDTO dto,HttpServletRequest req)抛出异常; 以及这个 MassPostDTO 模型: @

回答 1 投票 0

Java 序列化期间同一对象字段的多个 json 名称

为了在 json 中序列化 java 对象的名称字段,如果我有一个 java 类: 课堂测试{ 私有字符串名称; } 当我创建带有名称的测试对象时。 在场景一中,当我连载...

回答 2 投票 0

在未将 Spring Web 添加到项目依赖项的情况下,Spring Boot 项目中不包含“jackson 库”是否正确?

我最近开始学习spring。 我从其他人那里听说 spring 已经提供了 jackson 库依赖项,但我想知道这是否意味着“spring web”支持 jackson 或者...

回答 1 投票 0

Jackson:从 XSD 生成 Jackson 类

与 JAXB 为给定 XSD 生成 JAXB 类类似,Jackson 是否提供任何实用程序来从 XSD 或 JSON 生成 Jackson 类。 JAXB 类生成器已为 XSD 生成了一组类...

回答 1 投票 0

带有 xml 和 json 的 Spring Boot 与 jackson 仅返回 xml

先感谢您的帮助! 我在 Spring Boot 应用程序中有一个奇怪的行为。让我为您解释一下: 我正在用一些...来包装一些旧版 Web 服务(自定义 xml 消息)

回答 2 投票 0

在 micronaut 控制器响应对象中序列化 JsonNode 时出现问题

我使用了 Jackson ObjectMapper 将一些文本 JSON 解析为 JsonNode (使用 readTree)。我可以打印出漂亮的打印字符串,一切看起来都不错。 如果该 JsonNode 位于返回的对象上...

回答 1 投票 0

如何使用 Jackson JSON 库打印 json 文件中的所有内容,包括没有键和数组中包含对象的嵌套数组对象?

我需要使用 Java 中的 Jackson 打印 JSON 文件中的所有内容。我已经完成了 90% 的任务。这是我的 Json 文件: { “我的数据”:{ “电话号码”:“5555555555”...

回答 1 投票 0

JSON、Jackson 和多行字符串

我有以下 JSON。 {“内容”:“价值”} 我让 Jackson 构建 JSON 字符串。 如果该值是多行文本,例如: A 乙 C 我看到的是:{“内容”:“A 乙 C” } 它

回答 1 投票 0

java.lang.NoSuchMethodError:jackson.databind.introspect.AnnotatedMember.getType

我在访问本地计算机中的端点时遇到错误: 日志: org.apache.camel.CamelExecutionException:在交易所执行期间发生异常:Exchange[ID-aaayush-mac-

回答 1 投票 0

错误:jackson.databind.introspect.AnnotatedMember.getType(Lcom/fasterxml/jackson/databind/type/TypeBindings;)Lcom/fasterxml/jackson/databind/JavaType;

我在访问本地计算机中的端点时遇到错误: 日志: org.apache.camel.CamelExecutionException:在交易所执行期间发生异常:Exchange[ID-aaayush-mac-

回答 1 投票 0

需要有关旧 Jackson.codehause.org 项目的信息

我在 Jackson.codehause.org 上看到了一个与我有个人关系的项目。现在我再也找不到那个项目了。请帮我找到这些旧项目。 当我访问 Jackson.codehause.org 时,它说...

回答 1 投票 0

发布到 Spring Boot 2 自定义端点时出现 JSON 解码错误

我正在使用 Spring Boot 2.0.4.RELEASE 的自定义端点 我的自定义端点如下, @Endpoint(id = "mycaches" ,enableByDefault=true) @成分 公共类 CacheEndpoint { @WriteOpera...

回答 1 投票 0

Jackson ObjectMapper 不尊重配置的日期时间格式

我很可能遗漏了一些东西,但是,我无法配置对象映射器以使用给定的日期时间格式。使用相同的日期格式化程序解析日期时间字符串(用于配置

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.