如何在正文中使用JsonArray创建POST

时间:2017-10-02 20:53:16

标签: android

我想使用 POST METHOD

将此json正文发送到服务器
   {
      "donatations": [
                       {
       "campaignId": "string",
       "name": "string",
       "type": 0, 
       "donationValue": 0 
       }
   ],
   "profileId": "string",
   "creditCardId": "string",
   "isPaidFees": true,
   "isRequestDonatation": true
   "amountFees": 0,
   "totalDonationAmount": 0, 
   "institutionId": "string" 
    }

我在网上尝试了很多可用的解决方案,但是大多数解决方案都告诉格式化字符串并发送到服务器。有没有正确的方法将此主体发送到服务器?。

我通常这样做是为了将简单的字符串发送到服务器

 JsonObject dados = new JsonObject();
                dados.addProperty("profileId", sessionManager.getUsuario().getId());
                dados.addProperty("name", scanResult.cardholderName.toString());

并将JsonObject作为我的POST主体发送

请帮帮我。感谢。

3 个答案:

答案 0 :(得分:1)

您可以使用JsonObj / Array API创建一个:

JSONObject obj = new JSONObject();
JSONArray array = new JSONArray();
for(int i = 0; i < 10; i++){
JSONObject objFromArray = new JSONObject();
objFromArray.put("key", "value");
objFromArray.put("ke2y", "value");
array.add(objFromArray);
}
obj.put("child", array);
obj.put("normalObject", "another value");

你将有一个对象:

{"child": [ {/**obj*/}, /** 9 more objs*/ ], "normalObject":"anther value" }

答案 1 :(得分:0)

我通常使用Spring和Java POJO来发送/接收数据,如上所述。创建一个新的Spring Java应用程序。一旦有了基本的Spring应用程序,您现在可以使用POJO为您的数据结构建模。以下内容适用于您的数据结构:

public class Profile() {
    private String profileId;
    private String creditCardId;
    private boolean isPaidFees;
    private List<Donations> donations;
    //etc. plus getters and setters
}

public class Donations(){
    private String campaignId;
    private String name;
    private int type;
    private float donationValue;
    //etc. plus getters and setters
}

现在您已经在Java POJO中定义了数据结构,您可以使用spring为您创建一个REST接口。这可以在JSon中读取并将其转换为您的POJO,或者它可以获取您的POJO并将其作为JSon返回。

@RequestMapping(value = "/getProfile", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    public Profile getProfile(@RequestBody Profile profile) {
    System.out.println(profile.profileId);
    return profile;
}

答案 2 :(得分:0)

如果您只是创建要发布的对象,则无需创建pojo。这是一个非常简单的方法:

    JSONObject mainObject = new JSONObject();
    JSONArray array = new JSONArray();
    JSONObject arrayItem = new JSONObject();

    try {
        //PUT VALUES TO THE ARRAYITEM. 
        //YOU WILL NEED TO LOOP HERE IF YOU HAVE MORE THAN 1 ITEM IN THE JSONARRAY
        arrayItem.put("campaignId", "string");
        arrayItem.put("name", "string");
        arrayItem.put("type", 0);
        arrayItem.put("donationValue", 0);

        //PUT THE JSONOBJECT ITEM INSIDE THE JSONARRAY
        array.put(arrayItem);

        //PUT THE JSONARRAY INSIDE THE MAIN JSONOBJECT
        mainObject.put("myArray", array);

        //KEEP PUTTING THE REMAINING ITEMS INSIDE THE MAIN JSONOBJECT
        mainObject.put("profileId", "string");
        mainObject.put("creditCardId", "string");
        mainObject.put("isPaidFees", true);
        mainObject.put("isRequestDonatation", true);
        mainObject.put("amountFees", 0);
        mainObject.put("totalDonationAmount", 0);
        mainObject.put("institutionId", "string");
    } catch (JSONException e) {
        e.printStackTrace();
    }

现在您可以像以前那样以正常方式发送mainObject。