将JSONObject转换为List <namevaluepair> </namevaluepair>的方法

时间:2014-04-25 07:14:49

标签: java php android json

嗨,我正在创建一个Android应用程序。在我的应用程序中,我有一些表单字段,如edittext和单选按钮,我通过从所有表单字段中检索文本来创建JSONObject。 JsonObject已成功创建。现在我想将这个对象传递给我的PHP页面,在那里我编写了用于获取此详细信息并将其存储在数据库中的代码。我的问题是我不了解如何通过httpPosthttpGet方法发送此JSON对象。我知道的唯一方法是通过List<NameValuePair>发送参数,所以我试图将JSONObject转换为List<NameValuePair>。任何人都可以提供一种方法,可以直接将我的JSONObject转换为List<NameValuePair>。是否有任何预定义的方法来执行此操作。或者任何人都可以提供解决方案,我可以通过JSONObject直接发送到PHP并在那里检索。

3 个答案:

答案 0 :(得分:1)

将JSONObject作为字符串传递给String Entity构造函数,然后将其传递给setEntity()

<强>示例:

    HttpPost request = new HttpPost("//website");
    StringEntity params =new StringEntity("passmyjson=" + yourJSONOBject.toString());
    request.addHeader("content-type", "//header");
    request.setEntity(params);
    HttpResponse response = httpClient.execute(request);
在php文件中

检查它是否有效;

<?php
print_r($_POST);
$json_string = $_POST['passmyjson']; 
$json = json_decode($json_string);
print_r($json);
?>

答案 1 :(得分:1)

您可以使用Apache HttpClient执行此操作。我假设您已经有一个处理此请求的PHP处理程序。简单地说,

  • 创建JSONObject
  • 放置您想要的值
  • 将json发送到php处理程序
  • 您需要以application/x-www-form-urlencoded
  • 发送请求

致电网址:http://your_php_service.com/handleJson;

HttpClient httpClient = new DefaultHttpClient();
JSONObject json = new JSONObject();
json.put("key", "val");

try {
    HttpPost request = new HttpPost("http://your_php_service.com/handleJson");
    StringEntity params = new StringEntity("json=" + json.toString());
    request.addHeader("content-type", "application/x-www-form-urlencoded");
    request.setEntity(params);
    HttpResponse response = httpClient.execute(request);
} catch (Exception ex) {

} finally {
    httpClient.getConnectionManager().shutdown();
}

请求参数的格式为;

json={"key": "val"}

你可以像php那样处理这个问题;

<?php
.....
$json = $_POST["json"]; // This will be json string
.....

答案 2 :(得分:1)

谢谢你,我得到了它

我将以下几行添加到我的android Activity类

 DefaultHttpClient httpClient = new DefaultHttpClient();
 HttpResponse httpResponse;
 HttpPost httppost = new HttpPost(link);                //-->link is the php page url 
 httppost.setEntity(new StringEntity(obj.toString()));  //-->obj is JSONObject
 httpResponse = httpClient.execute(httppost);
 HttpEntity httpEntity = httpResponse.getEntity();

并在我的php文件中添加了以下代码

$msg=json_decode(file_get_contents('php://input'), true); 

为了从收到的Json字符串中获取特定值,我添加了此$data = $msg['name'] ;

它正在运作