2017-08-17 75 views
0

我有类似下面的类:如何发布jsonstring如REST类型的请求邮递员

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); 
} 

}

我的问题是关于问题的REST调用Web服务的输入。我的请求必须有一个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 s。正如你所看到的,我使用了类名。那是对的吗?如果我已经从stackoverflow的其他问题中正确地理解了它,那么当我使用基于Spring编写的类时,应该使用这个。

  2. 如果不正确,我该如何找到应该调用的内容?我可以简单地通过查看课程来看到jsonArray的名称,因为它们是课程的变量。但是包含所有这些数组的jsonObject的名称怎么样?

  3. 从这个类看来,类似乎还必须接受空字符串作为过滤器。但我也尝试过,并且不起作用。我应该在哪里寻找问题?

我还要提到的是我的工作是在一家公司,这是一个非常大的项目,该项目最近已被转换为Spring框架的一小部分,我们正在测试,如果一切工作了。

+0

什么库是JsonUtils。我没有看到它的导入 –

回答

1

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

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

他有他们,这是从龙目岛@数据呢。我完全不清楚他的问题,但让我们看看你是否正确。 – Oleg

+0

@Monish非常感谢您的回答。我也尝试过你的格式,而且我得到了同样的错误。那么问题在哪里呢? – user1419243

+1

@ user1419243也许如果你可以分享呼叫代码,也许它会更清晰 –