Привет, у меня есть php, который мне json'ом возвращает несколько значений:
Он их берёт из таблицы SQL и возвращает вроде как массивом.
Вот код php:
$sql = "SELECT * FROM `table_name`";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc())
{
$day["day:"] = ($row['day']);
$class["class:"] = ($row['class']);
$letter["letter:"] = ($row['letter']);
$lesson["lesson:"] = ($row['lesson']);
$task["task:"] = ($row['task']);
echo json_encode($day);
echo json_encode($class);
echo json_encode($letter);
echo json_encode($lesson);
echo json_encode($task);
}
Так вот пытаюсь я это в java коде принять, и вроде как принимаю, и всё бы было ничего, но тут сталкиваюсь с проблемой..
Мне необходимо запихнуть данные в ListView
..
Вот такую штуку скрипт мне даёт:
{"day:":"Четверг"}{"class:":"3 класс"}{"letter:":"А"}{"lesson:":"География"}{"task:":"Задание 1"}
Я ее в приложении принял в строку и передал в JSONObject и пытаюсь передать в ListView следующим кодом:
public void JSONURL(String result) {
try {
JSONObject json = new JSONObject(result);
System.out.println(json);
JSONObject uDay = json.getJSONObject("day");
JSONObject uClass = json.getJSONObject("class");
JSONObject uLetter = json.getJSONObject("letter");
JSONObject uLesson = json.getJSONObject("lesson");
JSONObject uTask = json.getJSONObject("task");
for (int i = 0; i < uLesson.length(); i++) {
HashMap<String, Object> hm;
hm = new HashMap<String, Object>();
hm.put(DAY, uDay.getString("day").toString());
hm.put(CLASS, uClass.getString("class").toString());
hm.put(LETTER, uLetter.getString("letter").toString());
hm.put(LESSON, uLesson.getString("lesson").toString());
hm.put(TASK, uTask.getString("task").toString());
myBooks.add(hm);
SimpleAdapter adapter = new SimpleAdapter(showHomework.this, myBooks, R.layout.list,
new String[] { TASK, CLASS, LETTER, LESSON, DAY}, new int[] { R.id.text1, R.id.text2, R.id.text3, R.id.text4, R.id.text5 });
//выводим в листвью
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
}
Вооот... А терминал Android Studio выдаёт ошибку:
Error parsing data org.json.JSONException: No value for day.
Как я понял моё код не может найти соответственное значение day в json'е..
Ребят, прошу не ругаться, я в этой теме новичок.. Помогите чем можете..
Формируем массив, в php, и конвертируем в json строку
$data=[
'day'=>$row['day'],
'class'=>$row['class'],
'letter'=>$row['letter'],
'lesson'=>$row['lesson'],
'task'=>$row['task']
];
echo json_decode($data);
Пример Java:
JSONParser parser = new JSONParser();
Object obj = parser.parse(response);
JSONObject jsonObj = (JSONObject) obj;
System.out.println(jsonObj.get("day"));
С java не знаком, по этому - Источник
Эксепшен вы получаете потому что вы пытаетесь взять значение по неправильному ключу. Сервер вам возвращает значение дня по ключу "day:", а вы парсите по ключу "day". Просто добавьте двоеточие, и все заработает.(то же самое в остальных полях)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Соединил XAMPP, yii и postgreSQLСоздал элементарную бд, схему, 1 таблицу, в таблице 3 столбца: id_point (key,integer, это наш айдишник), title(text), point_xy(point)
Подскажите пожалуйста, как можно составить правильный XPath, чтобы получить только сам текст этого отзыва, без заголовка и датыЕсть вот такой...