【问题标题】:Android - Parse PHP json_encode to JavaAndroid - 将 PHP json_encode 解析为 Java
【发布时间】:2016-01-14 08:03:44
【问题描述】:
String json_string_from_server = "{\"test1\":\"test1_value\",\"test2\":\"test2_value\"}";

如何循环 JSON 并打印所有键和值。

【问题讨论】:

标签: java php android json


【解决方案1】:

你可以像下面这样简单地解析 Json 字符串 -

String json_string_from_server = "{\"test1\":\"test1_value\",\"test2\":\"test2_value\"}";

JSONObject jObj = new JSONObject(json_string_from_server);
String val_Test1 = jObj.getString("test1");
String val_Test2 = jObj.getString("test2");

案例2:

String json_string_from_server = "{ 
  "result" : [
    {\"test1\":\"test1_values_baru\", \"test2\":\"test2_values\"}, 
    {\"test1\":\"test‌​1_values\", \"test2\":\"test2_values\"}
  ]
}";

JSONObject jObj = new JSONObject(json_string_from_server);
JSONArray jResultArray = jObj.getJSONArray("result");
for(int i=0; i<jResultArray.length(); i++){
    JSONObject jResultObj = jResultArray.getJSONObject(i);
    String val_Test1 = jResultObj.getString("test1");
    String val_Test2 = jResultObj.getString("test2");
}

【讨论】:

  • 这是完美的工作....谢谢.. 但我想知道我们可以让它只循环所有值而不插入密钥吗???
  • @Syamsoul Azrien:并不是真的因为要访问一个你需要它的密钥的值。如果它是一个数组,那么键是相同的,只是在这种情况下改变了值循环可以完成。
  • 还有一个问题.. 抱歉.. 如果 JSON 字符串是这样的,如何循环 "[{\"test1\":\"test1_values_baru\",\"test2\":\"test2_values\ "},{\"test1\":\"test1_values\",\"test2\":\"test2_values\"}]"
  • @Syamsoul Azrien:您提到的字符串不是有效的 JSON 数组,因此我已对其进行更正并进行了解析。检查我的编辑:)
  • 真的很好!谢谢!
【解决方案2】:

假设 jsonString 是一个变量,您可以在其中从 php 获取所有 json。您将需要按如下方式迭代数组:

JSONArray arr = new JSONArray(JsonString);
for(int i=0; i<= arr.length(); i++)
{
    JSONObject obj = arr.get(i);
    obj.getString('test1');  // these are your strings
    obj.getString('test2');
}

【讨论】:

    【解决方案3】:
    String json_string="[{\"test1\":\"test1_values_baru\",\"test2\":\"test2_values\"},{\"test1\":\"test‌​1_values\",\"test2\":\"test2_values\"}]";
    
    JSONArray jResultArray = new JSONArray(json_string);
    for(int i=0; i<jResultArray.length(); i++){
           JSONObject jResultObj = jResultArray.getJSONObject(i);
           String val_Test1 = jResultObj.getString("test1");
           String val_Test2 = jResultObj.getString("test2");
    }
    

    【讨论】:

    • 没错。想想你在你的 json_string 中得到的来自 sm webservices 的 json 响应 r。
    猜你喜欢
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多