如何通过请求将JSON对象发送到android中的Web服务

时间:2013-01-23 07:17:39

标签: android

我想将JSON对象作为请求传递给Web服务,如下所述。

Result:{
 "email":"xxxxxxx",
 "password":"xxxxxx",
 "Marks":[
  {
   "mark1":"50",
   "mark2":"70"
  }
],
"firstname":"xxxx",
"lastname":"xxxxx"
}

我的代码: ...

HttpPost httppost = new HttpPost("My Url");
    httppost.setEntity(new StringEntity(**message**.toString(), "UTF-8"));

这里消息应该有上面格式的json对象。我如何格式化JSON对象?

感谢。

5 个答案:

答案 0 :(得分:2)

如果您在android端实现上面的json对象时遇到问题,那么您可以像下面那样构建它,

JSONObject message = new JSONObject();

JSONObject mParams = new JSONObject();
mParams.put("email", "xxxx");
mParams.put("password", "xxx");

JSONArray markArray = new JSONArray(); 
JSONObject markObj = new JSONObject();
markObj.put("mark1", "50");
markObj.put("mark2", "70");
markArray.put(markObj);

mParams.put("Marks", markArray);

mParams.put("FirstName", "xxxx");
mParams.put("lastname", "xxxx");

message.put("Result",mParams);

现在在你的代码中

    HttpPost httppost = new HttpPost("My Url");
    httppost.setEntity(new StringEntity(**message**.toString(), "UTF-8"));

答案 1 :(得分:1)

您可以像字符串一样发送它:

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("json", message.toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

$data = json_decode($json);

答案 2 :(得分:1)

首先,您在上面提到的JSON是无效

现在,

  

这里的消息应该有上面格式的json对象。我怎么可能   格式化JSON对象?

=&GT;有两种方法可以做到这一点:

1)使用JSONObject或JSONArray类创建请求结构,类似于:

JSONObject objRequest = new JSONObject(); objRequest.putString( “电子邮件”, “XXXX”); objRequest.putString( “密码”, “XXXX”);

在HttpPost对象中设置实体时,将其转换为String值。

2)糟糕的方式,简单生成带有转义序列的字符串值,如:

String strRequest = "{\"email\":\"xxxxxxx\",\"password\":\"xxxxxx\"}";

答案 3 :(得分:0)

这可能会对您有所帮助..使用GSON库。 GSON是一个用于解析JSON资源的Google库。关于编组,它基本上意味着一种将数据结构(如OOP语言中的对象)转换为JSON的方法...... for instance

// Java object
class Book {
  private String title;
  private String isbn;
  private Set<author> authors;
}

@Entity
class Author {
  private String firstName;
  private String lastName;
}

要...

{title:   "Vocation Createurs",
 isbn:    "2829302680",
 authors: [{firstName: "Barbara", lastName: "Polla"},
           {firstName: "Pascal",  lastName: "Perez"}]} 

答案 4 :(得分:0)

您还可以使用现有的库,如android-json-rpc