如何从服务器获取数据?

时间:2016-03-30 11:29:10

标签: android json

运行网址后,我将以下列形式获取数据

[
  {
    "user_name": "riz",
    "gems_available": "10",
    "free_gems": "110"
  },
  {
    "match_name": "ausvsind",
    "Match_start_time": "2016-03-27  19:00:56",
    "season_name": "Mid-Season"
  }
]

现在我想得到user_name和所有数据,但无法做到..我在运行我的应用程序但是无法获取后得到结果中的数据。我有我的java代码。请帮助我,我错了

JSONObject jsonObj = new JSONObject();    
jsonObj.put("user_id", "abc@hotmail.com");
jsonArray = new JSONArray();
jsonArray.put(jsonObj);

final HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(USER_URL);

String str = jsonArray.toString().replace("[", "");
String str1 = str.replace("]", "");

httppost.setEntity(new StringEntity(str1.toString()));
resp = httpclient.execute(httppost);
HttpEntity ent = resp.getEntity();

result = EntityUtils.toString(ent);
jsonArray1.put(result);

jsobj = new JSONObject(result);
us1 = jsobj.getString(TAG_USER_NAME);
us2 = jsobj.getString(TAG_GEMS_AVAILABLE);
us3 = jsobj.getString(TAG_GEMS_FREE);

4 个答案:

答案 0 :(得分:0)

看看Retrofit:它可以帮助您自动将JSON解析为java POJO,并帮助您避免使用非差分样板

https://github.com/square/retrofit

答案 1 :(得分:0)

为什么要删除“[”和“]”字符?那些是JSONArray的一部分?如果您不想要它们,请改用JSONObject。

我没有对此进行测试,因此会出现一些问题。从概念上讲,这应该对你有用:

JSONObject jsonObj = new JSONObject();
jsonObj.put("user_id", "abc@hotmail.com");

final HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(USER_URL);

httppost.setEntity(new StringEntity(jsonObj.toString()));
resp = httpclient.execute(httppost);
HttpEntity ent = resp.getEntity();

result = EntityUtils.toString(ent);

JSONArray jsonArr = new JSONArray(result);

for (int i = 0; i < jsonArr.length(); i++)
{
      JSONObject jobj = jsonArr.getJSONObject(i);
      if (jobj.has("user_name")) 
      {
           us1 = jobj.getString("user_name");
      }
      if (jobj.has("gems_available"))
      {
           us2 = jobj.getString("gems_available");
      }
      if (jobj.has("free_gems")) 
      {
           us3 = jobj.getString("free_gems");
      }
 }

答案 2 :(得分:0)

当我必须从Json获取数据时,我总是你序列化。

查看GSON。有了它,您必须创建与json体系结构匹配的模型对象。之后,您可以轻松访问所有json属性。

答案 3 :(得分:0)

还有另一种更好的方法。

使用现代库进行API调用,例如 Retrofit 2.0 GSON

  1. Retrofit 2.0 添加到您的项目
  2. 阅读:https://github.com/square/retrofit

    1. 从您的JSON
    2. 创建 POJO对象

      http://www.jsonschema2pojo.org/

      • 选择来源类型&gt; JSON
      • 选择注释样式&gt; GSON
      1. 创建API服务接口
      2. 一步一步:http://square.github.io/retrofit/