2017-01-10 55 views
0

我想通过JSON数组与改造体内没有名字,但是我收到400 error.I想通过这个JSON数组没有名字通过pojo.Below是我想要传递的json数组。我也正在使用PATCH方法。如何没有名字传递JsonArray在改造身体要求

[{ 
"op": "replace", 
"path": "/billing_address/line1", 
"value": "some other value"}] 

我使用下面的方法,在这种方法我正在在为logcat中,我想名单相同的反应,但经过这里面getAuthentionToken后,我得到400错误。

 Call<JSONResponse> getAuthentionToken(@Body List obj); 


    JSONObject jobj = new JSONObject(); 
    jobj.put("op","replace"); 
    jobj.put("path","/billing_address/line1"); 
    jobj.put("value","some other value"); 


    List arrlist = new ArrayList(); 
    arrlist.add(jobj); 


    apiInterface.getAuthentionToken(arrlist).enqueue(new Callback<JSONResponse>() { 
+0

你试过至今? –

+0

我试图通过使JSON对象,并通过同一个内部JSON数组通过JSON数组...我在logcat的响应来一样,我想,但是当我通过改造身体我得到error.So这里面的JSON数组对象我喜欢选择这个POJO,但还是我得到错误 – Sachin

+0

你得给设置了一个param名称(或字段名) – priyankvex

回答

0

下面是我和它的做工精细的正确答案。

公共类CardUpdate {

public String op; 
public String path; 
public String value; 

public CardUpdate(String op, String path, String value) { 

    this.op = op; 
    this.path = path; 
    this.value = value; 
} 

public String getOp() { 
    return op; 
} 

public void setOp(String op) { 
    this.op = op; 
} 

public String getPath() { 
    return path; 
} 

public void setPath(String path) { 
    this.path = path; 
} 

public String getValue() { 
    return value; 
} 

public void setValue(String value) { 
    this.value = value; 
} 

@Override 
public String toString() { 
    /*return "CardUpdate{" + 
      "op='" + op + '\'' + 
      ", path='" + path + '\'' + 
      ", value='" + value + '\'' + 
      '}';*/ 

    return "{" +'"'+ 
      "op" + '"'+":" +'"' +op + '"'+ 
      "," + '"'+"path" + '"'+":" + '"'+ path + '"'+ 
      "," + '"'+"value" + '"'+":" + '"'+ value + '"'+ 
      '}'; 
} 

}

CardUpdate updatt = new CardUpdate("replace","/billing_address/line1","some other value"); 
    List<CardUpdate> cardddd = new ArrayList<CardUpdate>(); 
    cardddd.add(updatt); 
+0

请添加一些细节解释“为什么”这个工作。回答“这就是答案”的代码并不能解释OP应该注意什么。 –

+0

你好,我通过使用这个结构得到了成功的反应。出于隐私的原因,我不能把响应和URL相同。 – Sachin

1

如果是在请求体发送数据的实现应该是这样的:

  1. 根据字段定义模型(区分大小写的“名称” - >字符串名称等)
  2. 设定API函数也很喜欢

@POST("/api/geo/getLoc") public void getFriendsLocation(@Body YourClass classObject, Callback<JsonElement> response);

  • 直接使用您的POST请求创建的类对象

    getFriendsLocation(yourClassObjectThatIncludesFields, new Callback ....);

  • 如果您在发送PARAMS为此,您可以用GSON数据。
    1.假设你有一个有这样的ID,数字域FriendNumber.Define一个函数的类:

    public static Map<String, Object> getMapFromObject(Object o) { 
        Gson gson = new Gson(); 
        Type stringObjectMap = new TypeToken<Map<String, Object>>() { 
        }.getType(); 
        return gson.fromJson(gson.toJson(o), stringObjectMap); 
    } 
    

    2.设置你的API函数也是这样的

    @POST("/api/geo/getLoc") 
    public void getFriendsLocation(@QueryMap Map<String, Object>,  Callback<JsonElement> response); 
    
  • 当您发送POST请求创建对象从您的域调用这个函数像下面这里

    getFriendsLocation(getMapFromObject(yourClassObjectThatIncludesFields), new Callback ....);

  • 我没有写完整的代码,其中包括类定义和回调函数,因为它们取决于您的自定义。我假设你需要发送身体,所以尝试第一种方式。

    +0

    如果它没有帮助,你可能会回到我身边!不要忘记注册!鼓励! –

    +0

    它是否适用于PATCH方法,因为我想使用PATCH方法而不是POST – Sachin

    +0

    请参阅此问题的第一个答案http://stackoverflow.com/questions/19797842/patch-request-android-volley –