如何将jsonstring作为RESTFULL请求发布给邮递员

时间:2017-08-17 06:45:08

标签: java database spring rest web-services

我有一个如下课程:

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.util.StringUtils;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;

@Data
public class MyTestClass {
@JsonProperty("first")
private List<String> first = new ArrayList<>();
@JsonProperty("second")
private List<String> second = new ArrayList<>();
@JsonProperty("third")
private List<String> third = new ArrayList<>();

public static MyTestClass emptyFilter() {
    return new MyTestClass();
}


@SuppressWarnings("unused") //JSR311
@Nonnull
public static MyTestClass fromString(@Nullable String jsonString) {
    if (StringUtils.isEmpty(jsonString)){
        return emptyFilter();
    }
    return JsonUtils.fromJSONString(jsonString, MyTestClass.class, false);
}

}

我的问题是关于 RESTfull调用webservice 的输入。我的请求必须有filter参数,该参数应该引用此类。所以,我作为过滤器参数给出的内容如下:

{"MyTestClass":{"first":[],"second":[],"third":[]}}

但我总是得到这个错误:

Failed to convert value of type 'java.lang.String' to required type 'MyTestClass'

我是Spring框架的新手,我的问题可能是愚蠢的:

  1. 我知道过滤器参数应为jsonObject,其中包含三个JsonArray s。 jsonObject中包含JsonArray的主要参数的名称应该是什么。我已经使用了类名,你可以看到。那是对的吗?如果我从stackoverflow上的其他一些问题中正确理解了这一点,那么当我使用基于Spring编写的类时,我应该使用它。

  2. 如果不正确,我怎样才能找到应该叫什么?我只需通过查看类就可以看到jsonArray的名称,因为它们是类的变量。但是包含所有这些数组的jsonObject的名称呢?

  3. 从类中,我觉得该类还必须接受空字符串作为过滤器。但我也尝试过这个并没有用。我应该在哪里寻找问题?

  4. 我还应该提一下,我的工作是在一家公司,它是一个非常大的项目的一小部分,最近已经转换为Spring框架,我们正在测试一切是否再次有效。

1 个答案:

答案 0 :(得分:1)

根元素不需要通过json中的名称引用。测试字符串应为

{"first":[],"second":[],"third":[]}