Ошибка при разборе строки Json Android
Я получаю разбор Json
Вот мой код Java
if(jsonstr!=null){
try{
JSONObject jsonResponse = new JSONObject(jsonstr);
/***** Returns the value mapped by name if it exists and is a JSONArray. ***/
/******* Returns null otherwise. *******/
JSONArray jsonproduct = jsonResponse.optJSONArray("products");
/*********** Process each JSON Node ************/
int lengthJsonArr = jsonproduct.length();
for (int i = 0; i < lengthJsonArr; i++) {
JSONObject c = jsonproduct.getJSONObject(i);
itemcode.add(c.get("Code").toString());
item.add(c.get("Name").toString());
quantity.add("");
category.add("CategoryCode");
}
Ошибка
org.json.JSONException: Value [{"Categories":[{......................all json}]
Мой JSON как
[{category {["a": "s" "b": "g"}, {"a": "s" "b": "g"}]},
product {["a": "s" "b": "g"}, {"a": "s" "b": "g"}]}]
URL веб-службы MY Json [веб-сервис][1]
Пожалуйста, помогите мне, как я могу решить эту проблему Спасибо заранее
7 ответов
Попробуй это,
if(jsonstr!=null){
try{
JSONArray jsonResponse = new JSONArray(jsonstr);
JSONObject jsonResponse = jsonResponse.get(0);
/***** Returns the value mapped by name if it exists and is a JSONArray. ***/
/******* Returns null otherwise. *******/
JSONArray jsonproduct = jsonResponse.getJSONArray("products");
/*********** Process each JSON Node ************/
int lengthJsonArr = jsonproduct.length();
for (int i = 0; i < lengthJsonArr; i++) {
JSONObject c = jsonproduct.getJSONObject(i);
itemcode.add(c.get("Code").toString());
item.add(c.get("Name").toString());
quantity.add("");
category.add("CategoryCode");
}
Попробуй это:
замещать products
в categories
try{
JSONObject jsonResponse = new JSONObject(jsonstr);
/***** Returns the value mapped by name if it exists and is a JSONArray. ***/
/******* Returns null otherwise. *******/
JSONArray jsonproduct = jsonResponse.optJSONArray("categories");
/*********** Process each JSON Node ************/
int lengthJsonArr = jsonproduct.length();
for (int i = 0; i < lengthJsonArr; i++) {
JSONObject c = jsonproduct.getJSONObject(i);
itemcode.add(c.get("Code").toString());
item.add(c.get("Name").toString());
quantity.add("");
category.add("CategoryCode");
}
Ваш JSON недействителен.
Вы можете использовать онлайн-инструмент для проверки: http://json.parser.online.fr/
Ссылка для синтаксиса JSON: http://www.w3schools.com/json/json_syntax.asp
РЕДАКТИРОВАТЬ: Хорошо, теперь у нас есть ваш настоящий JSON, это правильно.
Как насчет замены JSONObject
от JSONArray
, Потому что ваш JSON является Array
,
Ваш JSON недействителен.
Может быть, вы собираетесь что-то подобное?
{
"categories": [
{
"a": "s",
"b": "g"
},
{
"a": "s",
"b": "g"
}
],
"product": [
{
"a": "s",
"b": "g"
},
{
"a": "s",
"b": "g"
}
]
}
Это происходит потому, что ваш JSON начинается с jsonArray
тогда почему вы берете jsonObject
для этого
[
{
"categories": [
{
"Code": "1001",
"Name": "ROOM LINEN",
"ShortName": "ROLN",
"DivisionCode": "10",
"SequenceNo": "3"
Вы должны попробовать код @akash moradiya, учитывая, что он указывает правильный путь.
Это потому, что используемый вами json недействителен. и анализ, который вы делаете, тоже недействителен
Вот хорошая ссылка, чтобы начать с разбора Android JSON
http://www.androidhive.info/2012/01/android-json-parsing-tutorial/
Попробуй это..
JSONArray jsonarray = new JSONArray(jsonstr);
JSONObject jsonResponse = jsonarray.getJSONObject(1);
JSONArray jsonproduct = jsonResponse.getJSONArray("products");
for (int i = 0; i < jsonproduct.length(); i++) {
JSONObject c = jsonproduct.getJSONObject(i);
itemcode.add(c.getString("Code"));
item.add(c.getString("Name"));
quantity.add("");
category.add("CategoryCode");
}