Как извлечь значения из JSONObject в Android

1. У меня есть такой объект json, как я могу получить доступ ко всем значениям в android
2. Прежде чем кто-либо проголосует против, я хочу сказать, что я искал в stackoverflow похожие примеры, но эти примеры содержат JSONObject, а затем JSONArray < br> 3. Здесь в моем случае все JSONObject, так что я немного запутался

{
"1":
{"sno":"10","latitude":"31.249441437085455","longitude":"75.70003598928452"},

"2":
{"sno":"11","latitude":"31.249398442090207","longitude":"75.70003397762775"}
}

Вот как я добрался до JSONObject
1. Нижеприведенный код вернул мне вывод, подобный тому, который представляет собой весь JSONObject
2. Есть ли способ сделать «1» и «2» как массив JSON?

$select_rows = "select sno,latitude,longitude from activities where username='$username'";
if ($result = mysql_query($select_rows)) {

$num_of_fields = mysql_num_fields($result);
$num_of_rows = mysql_num_rows($result);

 $i = 0;

    $j = 1;

    while ($retrieved = mysql_fetch_array($result)) {

        for ($i = 0; $i < $num_of_fields; $i++) {

            $field_name = mysql_field_name($result, $i);

            $object[$j][$field_name] = $retrieved[$field_name];
        }
        $j++;
    }
    echo json_encode($object);
}

person phpnerd    schedule 27.04.2014    source источник
comment
Единственный способ разобрать все значения в JSONObject — это знать теги для всех элементов. Вам было бы лучше использовать массив в вашем json, а не называть их 1, 2 и т. д.   -  person Dan Harms    schedule 27.04.2014
comment
@dcharms я подробно рассказал, как получить этот вывод ... не могли бы вы предложить мне, как сделать JSONArray, если у вас есть какие-либо идеи ... в противном случае спасибо за ваши усилия ...   -  person phpnerd    schedule 27.04.2014


Ответы (3)


Надеюсь, это поможет вам

JSONObject jsonObject=new JSONObject(result);

            jsonObject=jsonObject.getJSONObject("1");

            Double lat=jsonObject.getDouble("latitude");




            Toast.makeText(getBaseContext(),""+ lat, Toast.LENGTH_LONG).show();
person shabeer    schedule 27.04.2014

Лучше создайте действительный JSONArray, чтобы упростить задачу. Когда вы создаете строку JSON, не добавляйте индекс. Я полагаю, что вы читаете данные из sqlite и генерируете строку JSON.

Также измените внешнюю { (фигурную скобку) на [ (квадратную скобку), чтобы представить ее как элемент Array. Итак, ваша строка json будет такой

[
{
    "sno": "10",
    "latitude": "31.249441437085455",
    "longitude": "75.70003598928452"
},
{
    "sno": "11",
    "latitude": "31.249398442090207",
    "longitude": "75.70003397762775"
}
]

Затем вы можете просто получить его как JSONArray

JSONArray jsonArray = new JSONArray(jsonString);

А затем прочитайте каждый элемент в элементе массива

 for(int index = 0;index < jsonArray.length(); index++) {
    JSONObject jsonObject = jsonArray.getJSONObject(index);
 }
person Libin    schedule 27.04.2014
comment
Привет, не могли бы вы взглянуть на этот пост. Я не получаю ответа. for-loop" title="маркер не добавляется должным образом при добавлении цикла for"> stackoverflow.com/questions/23319920/ - person phpnerd; 27.04.2014

Чтобы получить один из ваших внутренних элементов JSONObject, вам нужно получить его из внешнего, используя getJSONObject (ключ String).

Образец кода:

JSONObject item1 = myJson.getJSONObject("1");
//item1 now contains {sno:10,latitude:31.2...etc}
//now you can get the individual values out of the resulting JSON Object
//for example, getting the latitude
double lat = item1.getDouble("latitude");
person Matt O    schedule 27.04.2014