【问题标题】:Android application to web server with JSON lib带有 JSON 库的 Android 应用程序到 Web 服务器
【发布时间】:2013-06-17 02:47:44
【问题描述】:

我有一个问题好几天都解决不了。

字符串行输入是从 PHP 服务器的 JSON 发送的 "{"name":"John", "Hobby":"Cycle"}"

android应用程序代码

public void testFn()
{
    try {
        while ((line = reader.readLine()) != null) {
            String tmp = gson.toJson(line.toString());
            JSONObject jobj = (JSONObject)new JSONParser().parse(tmp);
            sb.append(jobj.get(1).toString() + "\n");
        }
    }catch ....
}

我想转换接收到的字符串并将其转换为 JSONObject / JSONArray,我可以检索它或以字符串格式显示到 TextView。但我不断收到从 java.String 到 JSON.simple.JSONObject 的 CastException 错误。 希望有人能在这方面启发我

【问题讨论】:

  • 没有评论,没有回应。你的问题解决了吗?
  • 我不知道,没有学习任何关于JSON的东西,你怎么能在这里问任何问题?我强烈建议您阅读w3schools.com/json/json_syntax.asp。我不认为您首先对 JSON 有很好的了解。因为,数组是在[] 符号之间声明的。

标签: java php android json


【解决方案1】:
class MyJsonObject{
  private String name;
  private String Hobby;
  MyJsonObject() {

  }
}

MyJsonObject obj = new MyJsonObject();
Gson gson = new Gson();
String json = gson.toJson(obj);  

(反序列化)

MyJsonObject obj2 = gson.fromJson(json, MyJsonObject.class);  

【讨论】:

    【解决方案2】:

    试试

    String str = "{\"name\":\"John\", \"Hobby\":\"Cycle\"}";
    //i wrote preceded "\" to very " because it is code format string, 
    //not came from internet. You can pass direct response from PHP server
    try {
        JSONObject json = new JSONObject(str);
        Log.d("Home",json.getString("name"));
        Log.d("Home",json.getString("Hobby"));
    } catch (JSONException e1) {
        e1.printStackTrace();
    }
    

    【讨论】:

    • 基本上现在我编辑了我的代码,其中 my
      String line = "{"name":"John","Hobby":"Cycle"}";
      Object obj= parser.parse(line);
      JSONArray array=(JSONArray)obj;
      String tmp = array.getString(1);
    • @user2504530,这是明显的转换异常,因为您正在将对象转换为数组。阅读我在评论中给出的内容。然后返回您的实施。
    【解决方案3】:

    基本上现在我在这里编辑了我的代码

    String line = "{"name":"John","Hobby":"Cycle"}";
    Object obj=parser.parse(line);
    JSONArray array=(JSONArray)obj;
    JSONObject obj2 = (JSONObject)array.get(0);
    System.out.println(obj2.get("name").toString());
    

    对不起,我想出了一个办法。

    Output:
    John
    

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多