web-dev-qa-db-ja.com

JSONを読み取れませんでした:フィールド名の予期しない入力の終わり

Spring MVCWebアプリケーションを開発しています。私はまだUIを開発していません。そのため、Advance RestClientツールを使用してサービスをテストしています。

私のコントローラー

@Controller
@RequestMapping("/testController")
public class TestController {

@Autowired
private TestService testService;

@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_VALUE },  produces = { MediaType.APPLICATION_JSON_VALUE })
public
@ResponseBody void testMethod(@RequestBody TestParam testParam) {

    String tenant = testParam.getTenantCode();
    String testString = tenant + " is the tenant";
}
}

TestParam.Javaクラス

public class TestParam {

private String testVar;
private String tenantCode;

public String getTenantCode() {
    return tenantCode;
}

public void setTenantCode(String tenantCode) {
    this.tenantCode = tenantCode;
}

public String getTestVar() {
    return testVar;
}

public void setTestVar(String testVar) {
    this.testVar = testVar;
}
}

Advance Rest Clientとヘッダーを使用してリクエストを送信し、リクエストリンクが正しく設定されました。

{"testVar":"Test","tenantCode":"DEMO"}

リンクをリクエスト

http://localhost:8080/myApp/controller/testController/test

TestParamに検証可能なものが1つある場合は、正しく機能します。 2つ以上になるとエラーになり、testMethodにヒットしません。

exception is com.fasterxml.jackson.core.JsonParseException:  Unexpected end-of-input in field name at [Source:org.Apache.catalina.connector.CoyoteInputStream@7b24d498; line: 1, column: 43]
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.Java:181)
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.read(MappingJackson2HttpMessageConverter.Java:173)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.Java:135)

さらに記事を投げに行きましたが、それでも答えが見つかりませんでした。

6

増加するContent-Length: in headerは機能します

27

あなたのjsonフォーマットは何ですか? json形式では区切り文字として文字通りの\ nが使用されていると思いますが、JSONアクションとソースがきれいに印刷されていないことを確認してください。

1

ペイロードがなく、応答がjsonタイプであるというARCの問題があります。文字列が空であり、応答レポートがクラッシュしているため、パーサーはエラーをスローしています。

1
Paweł Psztyć