从 android 发送 JSON 对象

Sending JSON Object from android

我需要从 android 发送一个 JSON 对象,我应该发送的格式是:

{
  "type": "sample string 1",
  "features": [
    {
      "type": "sample string 1",
      "properties": {
        "fulcrum_id": "sample string 1",
        "fulcrum_parent_id": "sample string 2",
        "fulcrum_record_id": "sample string 3",
        "version": "sample string 4",
        "created_at": "sample string 5",
        "updated_at": "sample string 6",
        "created_by": "sample string 7",
        "updated_by": "sample string 8",
        "form010058": "sample string 9",
        "form010059": "sample string 10",
        "form010060": "sample string 11",
        "form010060_other": "sample string 12"
      },
      "geometry": "sample string 2"
    },
    {
      "type": "sample string 1",
      "properties": {
        "fulcrum_id": "sample string 1",
        "fulcrum_parent_id": "sample string 2",
        "fulcrum_record_id": "sample string 3",
        "version": "sample string 4",
        "created_at": "sample string 5",
        "updated_at": "sample string 6",
        "created_by": "sample string 7",
        "updated_by": "sample string 8",
        "form010058": "sample string 9",
        "form010059": "sample string 10",
        "form010060": "sample string 11",
        "form010060_other": "sample string 12"
      },
      "geometry": "sample string 2"
    },
    {
      "type": "sample string 1",
      "properties": {
        "fulcrum_id": "sample string 1",
        "fulcrum_parent_id": "sample string 2",
        "fulcrum_record_id": "sample string 3",
        "version": "sample string 4",
        "created_at": "sample string 5",
        "updated_at": "sample string 6",
        "created_by": "sample string 7",
        "updated_by": "sample string 8",
        "form010058": "sample string 9",
        "form010059": "sample string 10",
        "form010060": "sample string 11",
        "form010060_other": "sample string 12"
      },
      "geometry": "sample string 2"
    }
  ]
}

现在,我没有办法编写这种类型的 JSON 对象。 我想知道我是否必须组成一个 JSON 的数组,然后将每个条目一个一个地放入,或者我是否可以直接获取具有此数据的对象并将其传递给 JSON 作为:

JSONObject jsonObject = new JSONObject();
jsonObject.accumulate("type", obj);

请指导我编写这种类型的 JSON 对象,因为我最近学习了 JSON Web 服务,但没有得到塑造这个复杂对象的逻辑。

你基本上想向服务器发送一个 Json 字符串,所以我认为以下过程可以解决你的问题:

1.Add 这个 jar 到你的 build.gradle 文件下的 dependencies :

'com.google.code.gson:gson:2.3.1'
  1. 现在用你想要的字段名称添加创建一个 class,你可以将这些对象转换成你发布的 json 字符串格式:

您可以通过以下方式将对象转换为 json 字符串:

假设您创建了一个名为 Example.Java 的模型 class,并且在您的代码中有该对象

Example example = new Example();

现在您可以将示例对象转换为 json,如下所示:

Gson gson = new Gson();
gson.fromJson(example , Example .class);

要将 json 字符串转换为相应的对象,您可以使用 this

如有疑问请在下方评论

你的 class 应该是这样的:

public class CustomClass{
   String type;
   List<Feature> features;

   class Feature{
      String type;
      Properties properties;
      String geometry;
   }

   class Properties{
      String fulcrum_id;
      String fulcrum_parent_id;
      String fulcrum_record_id;
      .
      .
      .
   }
}

创建它的一个实例,输入您想要的值,然后使用 Gson 库将其转换为 Json,如下所示:

String json = new Gson().toJson(myObject)

按原样应用此代码,您将获得所需的准确输出。

JSONObject jObj = new JSONObject();

    try {
        jObj.put("type", "sample string 1");

        JSONArray jArray = new JSONArray();
        for(int i=0;i<3;i++) {

            //creating jsonobject for particular jsonarray index
            JSONObject inObj = new JSONObject();
            inObj.put("type", "sample string 1");

            //creating another jsonobject into jsonarray index
            JSONObject nestedInObj = new JSONObject();

            nestedInObj.put("fulcrum_id", "sample string 1");
            nestedInObj.put("fulcrum_parent_id", "sample string 2");
            nestedInObj.put("fulcrum_record_id", "sample string 3");
            nestedInObj.put("version", "sample string 4");
            nestedInObj.put("created_at", "sample string 5");
            nestedInObj.put("updated_at", "sample string 6");
            nestedInObj.put("created_by", "sample string 7");
            nestedInObj.put("updated_by", "sample string 8");
            nestedInObj.put("form010058", "sample string 9");
            nestedInObj.put("form010059", "sample string 10");
            nestedInObj.put("form010060", "sample string 11");
            nestedInObj.put("form010060_other", "sample string 12");

            // now putting nestedInObj into JSONobject for jsonarray index
            inObj.put("properties", nestedInObj);

            inObj.put("geometry", "sample string 2");

            // adding JSONobject to jsonarray index
            jArray.put(inObj);
        }

        //putting whole JSONarray to main jsonobjct
        jObj.put("features", jArray);

    } catch (JSONException e) {
        e.printStackTrace();
    }

    Log.e("json", jObj.toString());

如果有任何困难,请告诉我,我很乐意提供帮助。

编码愉快!