我最近开始用版本Swagger
实现2.9.2
。在没有其他项目的Jackson
的情况下,它可以很好地工作,但是当我添加具有Jackson
依赖性的相同代码时,由于无法将其(XML字符串)隐藏到Json对象中,因此集成测试开始失败。
尝试了Jackso
n个数据格式和版本的不同版本。
我的DTO课程:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Wither
public class PartsInfoDTO {
// TODO: 08/10/18 This class should be removed after lexcom start giving remark_line instead of RemarkLine for ex.
@JsonProperty("illustration")
private String Illustration;
@JsonProperty("quantity")
private String Quantity;
@JsonProperty("price")
private Price Price;
@JsonProperty("remark_line")
private String remarkLine;
@JsonProperty("part_number")
@ApiModelProperty(name = "part_number")
private String partNumber;
@JsonProperty("denomination_line")
private String[] denominationLine;
public PartsInfoDTO(PartsInfo partsInfo) {
setDenominationLine(partsInfo.getDenominationLine());
setIllustration(partsInfo.getIllustration());
setPartNumber(partsInfo.getPartNumber());
setPrice(partsInfo.getPrice());
setQuantity(partsInfo.getQuantity());
setRemarkLine(partsInfo.getRemarkLine());
}
}
我的Swagger配置:
@Configuration
@EnableSwagger2
public class PartsSwaggerConfiguration extends WebMvcConfigurationSupport {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.package.example"))
.paths(regex(PART_INFO_API))
.build();
}
}
stacktrace错误:
com.fasterxml.jackson.core.JsonParseException:意外字符 (“ <”(代码60)):预期的有效值(数字,字符串,数组, 对象,[来源:'true','false'或'null') (字符串)“ 1121-123453 1INR2ASWS03G102354Drucr“; 行:1,列:2]
在com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1804) 在 com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:669) 在 com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:567) 在 com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:1894) 在 com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:749) 在 com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4141) 在 com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4000) 在 com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3004) 在 com.vwits.asid.etka.PartInfoControllerTest.getPartInfo(PartInfoControllerTest.java:347) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498)在 org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 在 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 在 org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74) 在 org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) 在 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 在 org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) 在 org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) 在 com.github.tomakehurst.wiremock.junit.WireMockClassRule $ 1.evaluate(WireMockClassRule.java:60) 在org.junit.rules.RunRules.evaluate(RunRules.java:20)处 org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) 在org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)处 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) 在org.junit.runners.ParentRunner处$ 3.run(ParentRunner.java:290)在 org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:71)在 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)在 org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:58)在 org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268)在 org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 在 org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 在 com.github.tomakehurst.wiremock.junit.WireMockClassRule $ 1.evaluate(WireMockClassRule.java:70) 在org.junit.rules.RunRules.evaluate(RunRules.java:20)处 org.junit.runners.ParentRunner.run(ParentRunner.java:363)在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) 在org.junit.runner.JUnitCore.run(JUnitCore.java:137)处 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) 在 com.intellij.rt.execution.junit.IdeaTestRunner $ Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)