Codenameone如何在POST查询中添加多个JSON子条目

时间:2017-08-15 16:12:01

标签: json post codenameone

我有一个REST Web服务,允许我通过POST请求以JSON格式上传用户详细信息。看起来我可以使用

来做到这一点
public class BreweryViewModel
{
    public bool HasBeers { get; set; }
    // other properties
}

public class BreweryController
{
    public ActionResult Index()
    {
        var breweryVM = ...
        var beers = ...

        breweryVM.HasBeers = beers.Any();

        return View(breweryVM);
    }
}

"条目"是一个ArrayList< MapString,Object>

正如您在下面的JSON中所看到的,我还可以选择为每个用户发送多个条目(在本例中为地址详细信息),如此JSON示例所示:

post.addArgument("Name",entry.get("Name").toString());
post.addArgument("JobRole",entry.get("JobRole").toString());

我尝试过使用

{

    "Name":"Fred Flintstone",

    "JobRole":"Quarry worker",

    "Address":[

    {

       "Address1" :"Boulder House",

       "Address2" :"Rock Way",

       "Address3" :"Rock City"

    }

   ]
}

将地址下的用户条目组合起来,但我得到了" 400:错误请求"回。那么如何在我的请求中添加这样的多个条目呢?

此致

1 个答案:

答案 0 :(得分:1)

这些是POST样式参数,它们被添加为常规HTTP参数而不是JSON(就像在HTML中提交表单一样)。

您正在寻找的是:

ConnectionRequest cr = new ConnectionRequest(url, true) {
   protected void buildRequestBody(OutputStream os) throws IOException {
       // snipped this but you should get the rest...
       os.write("{\"Name\":\"Fred Flintstone\",\"JobRole\":\"Quarry worker\", ...");
   }
};

或者,您可以使用new terse REST API

Map<String, Object> jsonData = Rest.post(myUrl).body(bodyValueAsString).getAsJsonMap();