【问题标题】:Parsing asmx returned JSON on Android在 Android 上解析 asmx 返回的 JSON
【发布时间】:2012-08-16 03:32:56
【问题描述】:

我有一个 ASP.Net 3.5 Web 服务 (asmx),它返回看似有效的 JSON。我已经使用在线验证器 (JSONLint.com) 验证了返回的 JSON,它说它是有效的。我不知道如何解析这个字符串。

{
    "d": "{\"returnType\":\"authToken\",\"returnData\":\"b1ec28b8-3fca-427a-bbce-8802fb95d94b\"}"
}

下面是我的代码。

public static JSONObject DotNetJSONResponse(String raw) throws Exception {
    JSONObject joRaw;
    try {
        joRaw = new JSONObject(raw);
        JSONObject joD = joRaw.getJSONObject("d");
        return joD;
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
    }

}

【问题讨论】:

    标签: android asp.net json


    【解决方案1】:

    试试这个方法

    public static JSONObject DotNetJSONResponse(String raw) throws Exception {
    JSONObject joRaw;
      try {
          joRaw = new JSONObject(raw);
          String str1 = joRaw.getString("d");
          JSONObject joD = new JSONObject(str1);
          return joD;
          } catch (JSONException e) {
             // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
       }
    }
    

    【讨论】:

      【解决方案2】:

      试试这个。在您的示例响应中,d 是一个属性,而不是 JSONObject。所以必须先解析字符串,然后将d字符串转换为JSONObject。

      public static JSONObject DotNetJSONResponse(String raw) throws Exception {
          JSONObject joRaw;
          try {
              joRaw = new JSONObject(raw);
              String t=joRaw.getString("d");
              System.out.println(t);                  \\< ---------- 
              JSONObject joD = new JSONObject(t);
              return joD;
          } catch (JSONException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
              return null;
          }
      
      }
      

      【讨论】:

      • 我尝试了你的建议。 t = {"returnType":"authToken","re​​turnData":"b1ec28b8-3fca-427a-bbce-8802fb95d94b"}
      • 输出是什么?你有什么例外吗?
      • 当我通过代码,行 JSONObject joD = new JSONObject(t);似乎抛出异常。箭头向下跳以返回 null;(没有 e.printStackTrace(); 发生),但随后将带有正确数据的 JSON 对象返回到调用行。
      • 我对代码进行了一些编辑,确保t 获得了正确的 JSON 字符串。
      • t 中的值为 "{"returnType":"authToken","re​​turnData":"b1ec28b8-3fca-427a-bbce-8802fb95d94b"}"(无引号)。该方法确实返回了一个带有正确数据的 JSONObject,但仍然陷入困境。
      猜你喜欢
      • 2011-08-18
      • 1970-01-01
      • 2010-12-26
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多