【问题标题】:How to make a nested Json object in Java?如何在 Java 中创建嵌套的 Json 对象?
【发布时间】:2012-03-29 14:33:05
【问题描述】:

我想为我的 Android 设备编写一个嵌套的 JSON 对象,但是怎么做?我只有 Json 的基本经验,所以如果有人可以帮助我使用以下代码,我将不胜感激:

{ 
 "command": "login",
 "uid": "123123123",
 "params":
  {
   "username": "sup",
   "password": "bros"
  }
}

编辑:

下面的代码确实解决了这个问题:

loginInformation = new ArrayList<NameValuePair>(); 

JSONObject parentData = new JSONObject();
JSONObject childData = new JSONObject();

try {

    parentData.put("command", "login");
    parentData.put("uid", UID.getDeviceId());

    childData.put("username", username.getText().toString());
    childData.put("password", password.getText().toString());
    parentData.put("params", childData);

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

loginInformation.add(new BasicNameValuePair("content", parentData.toString()));

【问题讨论】:

  • 您是否尝试使用 json 与服务通信?真的需要发这么难的结构吗?
  • 你在开玩笑吗?发送嵌套的 JSON 对象有什么难的!?
  • 正是我所需要的!!谢谢@Xarialon
  • @ArunJose 不客气!

标签: android json


【解决方案1】:

您需要创建一个JSON,并将该JSON 作为参数添加到您的POST 中。为此,您可能应该:

post.add(new BasicNameValuePair("data",json.toString());

你可以使用org.json.JSONObject,它包含在Android SDK中。

【讨论】:

【解决方案2】:

为 Json 创建一个模型类,使用您的数据对其进行初始化。然后使用 Google Gson 将其转换为 Json 也从 Json 转换为返回对象。这里还有两个链接可以让您更轻松地使用 Json。 在线 Json 编辑器。您可以检查生成的 json 格式是否正确。 http://www.jsoneditoronline.org/ 和 Json 到 POJO 生成(模型类生成器) http://www.jsonschema2pojo.org/

【讨论】:

    【解决方案3】:

    BasicNameValuePair 用于添加 POST 参数。有点不清楚你在问什么。您是在问,鉴于 JSON,如何将参数值作为 post 参数提交?

    你需要先解析JSON,然后拉出参数,然后添加到表单post中,像这样,

    JSONObject jo = new JSONObject(jsonString);
    JSONObject joParams = jo.getJSONObject("params");
    String username = joParams.getString("username");
    
    post.add(new BasicNameValuePair("username",username);
    

    您当然希望检查 JSON 以确保 params 对象存在,并确保 username 参数退出。

    【讨论】:

      【解决方案4】:

      如果您只想将 JSON 块发送到服务器,则不应使用键值对,而只需将数据作为 StringEntity 发布。

          HttpPost request = new HttpPost(api_call);
      
          request.setHeader("Content-Type", "text/javascript");
          request.setEntity(new StringEntity(jsonString);
      
          httpClient.execute(request);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-21
        • 2013-03-26
        • 1970-01-01
        • 2021-06-25
        • 1970-01-01
        相关资源
        最近更新 更多