Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 需要帮助从JSONArray提取数据吗_Android_Json_Arraylist - Fatal编程技术网

Android 需要帮助从JSONArray提取数据吗

Android 需要帮助从JSONArray提取数据吗,android,json,arraylist,Android,Json,Arraylist,首先感谢奔腾10的支持!这让我更进一步 我有一个JSONArray,它是由 echo (json_encode($output)); 它生成了这个输出 // linebreaks only for readability, they do not exist in the response [["Fitch's Chemist","731 Hay St","(08) 9321 6411"], ["Ferrara Karaoke Bar","67 Milligan Street","(08) 9

首先感谢奔腾10的支持!这让我更进一步

我有一个JSONArray,它是由

echo (json_encode($output));
它生成了这个输出

// linebreaks only for readability, they do not exist in the response
[["Fitch's Chemist","731 Hay St","(08) 9321 6411"],
["Ferrara Karaoke Bar","67 Milligan Street","(08) 9481 1909"],
["Target: Perth","712-720 Hay St","(08) 9327 3700"],
["C Restaurant","44 St Georges Tce","(08) 9220 8333"],
["Celona Joe Tailors","146 Murray St","(08) 9325 8274"],
["Fashion In Colour","Shop 2, 138 Barrack St","(08) 9218 8233"],
["Mainpeak","858 Hay St","(08) 9322 9044"],
["Fj Storen Painting Contractors","34 Queen St","(08) 9486 9292"],
["Financial Pathfinders","Level 4\/81 St Georges Tce","(08) 9213 9699"],
["Seasons of Perth","37 Pier St","(08) 9325 7655"],
["David Jones","622 Hay St","(08) 9210 4000"],
["Pharmacity Chemist Supermart","717 Hay St","(08) 9322 6921"],
["Austcare","10 Pier St","(08) 9325 9330"],
["Western Australia","8 Pier St","(08) 9261 6222"],
["Oceanic Cruises","5 Barrack","(08) 9325 1191"]]
这将输出填充的列表数组,如下所示:

list(0)["Fitch's Chemist","731 Hay St","(08) 9321 6411"]
list(1)["Ferrara Karaoke Bar","67 Milligan Street","(08) 9481 1909"]
我现在需要做的是进一步提取,以便将“”封闭的数据存储在三个单独的数组中

    try {
        JSONArray jsonArray = new JSONArray(response);
        List<String> list = new ArrayList<String>();
        for (int i=0; i<jsonArray.length(); i++) {
            list.add( jsonArray.getString(i) );
            JSONArray jsonList = new JSONArray(list);
            BusinessName.add(jsonList.getString(0));
            Address.add(jsonList.getString(1));
            TelNo.add(jsonList.getString(2));
        }
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
试试看{
JSONArray JSONArray=新JSONArray(响应);
列表=新的ArrayList();

对于(int i=0;iedit):我尝试了您的示例,代码几乎可以运行,但有一个小错误。您不应该使用
list
获取
JSONArray jsonList

这项工作(已测试):

//此字符串仅用于测试,请使用您的响应。。。
字符串json=“[\“惠誉化学师\”,“731 Hay St\”,\“(08)9321 6411\”,”
+“[“费拉拉卡拉OK酒吧”,“米利根街67号”,“08)9481 1909\”,”
+“[\“目标:珀斯\”,“712-720 Hay街\”,“08)9327 3700\”,”
+“[\'C餐厅\',\'44 St Georges Tce \',\”(08)9220 8333 \',”
+“[\'Celona Joe Tailors\,'146 Murray St\,\”(08)9325 8274\,”
+“[\”色彩时尚“,\”兵营街138号2号店“,\”(08)9218 8233\”,”
+“[\'Mainpeak\',\'858 Hay St\',\”(08)9322 9044\',”
+“[\'Fj Storen油漆承包商\',\'34皇后街\',\”(08)9486 9292 \',”
+“[\“金融开拓者”,\“4/81级圣乔治Tce\”,\“(08)9213 9699\”,”
+“[\'珀斯四季',\'码头街37号',\”(08)93257655\”,”
+“[\'David Jones\',\'622 Hay St\',\”(08)9210 4000\',”
+“[\'药剂师超人',\'717 Hay St\,\”(08)9322 6921\,”
+“[\'Austcare\',\'10 Pier St\',\”(08)9325 9330\',”
+“[\'Western Australia\',\'8 Pier St\',\”(08)9261 6222\',”
+“[\'Oceanic Cruises\',\'5兵营\',\”(08)9325 1191 \'”;
试一试{
JSONArray JSONArray=新JSONArray(json);
列表=新的ArrayList();
for(int i=0;i
假设您有一个名为JSONArray的JSONArray变量,它包含您的数据

要提取数据,您需要使用:

getJSONObject(int索引)(返回JSONObject)-用于获取对象内部的对象 getJSONArray(int index)(返回jsonArray)-用于获取数组中的数组

其余的都是不言自明的

get(int索引)(返回一个对象) getBoolean(int索引)(返回布尔值) getDouble(int索引)(返回双精度) getInt(int索引)(返回整数) getLong(int索引)(返回一个Long)
jsonArray.getString(int index)(返回字符串)

能否显示打印列表的代码(0)…您粘贴的代码?添加到问题中的代码是否有效?您应该更善于沟通:)对不起,你是对的。请耐心等待这是我的第一篇文章。不,代码不起作用,它会抛出一个JSON错误int超出范围谢谢DallaRosa,你能告诉我我有哪一个是QObject还是数组吗。你有一个数组数组。你使用getJSONArray(数字)来获取内部数组,然后使用getString(数字)在第二个数组上获取values@WarrenFaith很抱歉,我不明白这会有什么帮助。它只是在json数组中进行迭代。@WarrenFaith谢谢,我可以看出我的错误所在。我试图读取整个列表,而不是列表(I)。在第一次迭代中,列表(0)存在,但列表(1)存在不会因此产生错误。对于您的代码,我不需要list.add(jsonArray.getString(I));
// this string is just used for testing, use your response...
String json = "[[\"Fitch's Chemist\",\"731 Hay St\",\"(08) 9321 6411\"],"
            + "[\"Ferrara Karaoke Bar\",\"67 Milligan Street\",\"(08) 9481 1909\"],"
            + "[\"Target: Perth\",\"712-720 Hay St\",\"(08) 9327 3700\"],"
            + "[\"C Restaurant\",\"44 St Georges Tce\",\"(08) 9220 8333\"],"
            + "[\"Celona Joe Tailors\",\"146 Murray St\",\"(08) 9325 8274\"],"
            + "[\"Fashion In Colour\",\"Shop 2, 138 Barrack St\",\"(08) 9218 8233\"],"
            + "[\"Mainpeak\",\"858 Hay St\",\"(08) 9322 9044\"],"
            + "[\"Fj Storen Painting Contractors\",\"34 Queen St\",\"(08) 9486 9292\"],"
            + "[\"Financial Pathfinders\",\"Level 4/81 St Georges Tce\",\"(08) 9213 9699\"],"
            + "[\"Seasons of Perth\",\"37 Pier St\",\"(08) 9325 7655\"],"
            + "[\"David Jones\",\"622 Hay St\",\"(08) 9210 4000\"],"
            + "[\"Pharmacity Chemist Supermart\",\"717 Hay St\",\"(08) 9322 6921\"],"
            + "[\"Austcare\",\"10 Pier St\",\"(08) 9325 9330\"],"
            + "[\"Western Australia\",\"8 Pier St\",\"(08) 9261 6222\"],"
            + "[\"Oceanic Cruises\",\"5 Barrack\",\"(08) 9325 1191\"]]";

try {
    JSONArray jsonArray = new JSONArray(json);
    List<String> list = new ArrayList<String>();
    for (int i = 0; i < jsonArray.length(); i++) {
        list.add(jsonArray.getString(i));
        // thats the correct line:
        JSONArray jsonList = new JSONArray(jsonArray.getString(i));
        // Used for debug/test, use your own objects BusinessName, Address and TelNo
        System.out.println(jsonList.getString(0) + ":" + jsonList.getString(1) + ":" + jsonList.getString(2));
    }
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}