0

我想将 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 对象?

谢谢。

4

5 回答 5

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"));
于 2013-01-23T07:26:55.183 回答
1

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

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

$data = json_decode($json);
于 2013-01-23T07:24:27.040 回答
1

首先,您上面提到的 JSON 是INVALID

现在,

这里的消息应该有上述格式的 json 对象。我怎样才能格式化 JSON 对象?

=> 有两种方法可以做到这一点:

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

JSONObject objRequest = new JSONObject(); objRequest.putString("email","xxxx"); objRequest.putString("密码","xxxx");

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

2)不好的方法,简单地用转义序列生成一个字符串值,比如:

String strRequest = "{\"email\":\"xxxxxxx\",\"password\":\"xxxxxx\"}";
于 2013-01-23T07:37:47.450 回答
0

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

// 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"}]} 
于 2013-01-23T07:32:27.913 回答
0

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

于 2013-01-23T15:59:39.370 回答