Member 12391050 Ответов: 1

Ошибка синтаксического анализа данных org.json.jsonexception: значение .... #(mystring) типа java.lang.string не может быть преобразовано в jsonarray


я пытаюсь показать свою строку json в android listView, но обнаружил ошибку
Примечание: Я использую службы WCF для преобразования моих данных в формат json.

Ошибка разбора данных орг.в формате JSON.JSONException: значение [{"идентификатор":1,"имя":"Умар","ССН":"11111111"},{"идентификатор":2,"имя":"Хан","ССН":"2222222"}] на JSONDataResult типа Java.яз.Строка не может быть преобразована в JSONArray

Моя Строка Json ...
{"JSONDataResult":"[{\"Id\":1,\"Name\":\"Umair\",\"SSN\":\"11111111\"},{\"Id\":2,\"Name\":\"khan\",\"SSN\":\"2222222\"}]"}

Моя Android-Кодировка :..
охраняемых недействительными showList(){


пробовать {

// myJSON = myJSON.replace("\"","'");
JSONObject jsonObj = новый JSONObject(myJSON);

JArray = jsonObj.getJSONArray(TAG_Obj);


для(тип int я=0;Я&л;режим jarray="оплот"&ГТ; JSONObject с = JArray.getJSONObject(я);


ИД = ц.метода getString(в tag_id);
название = с.метода getString(TAG_Name);
ССН = с.метода getString(TAG_SSN);


Хранилище HashMap и Л;строка,строка&ГТ; Hashmappersons = новый HashMap и Л;строка,строка&ГТ;();

Hashmappersons.поставить(в tag_id,ИД);
Hashmappersons.поставить(TAG_Name имя);
Hashmappersons.поставить(TAG_SSN,ССН);

ArraypersonList.add(Hashmappersons);

}


ListAdapter listadapter = новый SimpleAdapter(

В MainActivity.это, ArraypersonList,
R. layout.list_item,
новая строка[]{TAG_ID,TAG_Name,TAG_SSN},
новый тип int[]{R. В ИД.tv_id, Р. ИД.tv_Name,Р. ИД.tv_SSN}

);

listv.setAdapter(listadapter);

}
catch (JSONException e) {
е.печатные();

Войти.в("" + е "ошибка" + е);
Log.e("log_tag", "ошибка синтаксического анализа данных "+e.toString());
Log.e("log_tag", "Failed data was:\n" +listv);

// tv_Er.setText("ошибка:" + e);

Toast.makeText(getApplicationContext ()," " +e+"",Toast.LENGTH_SHORT).показать();
}

}


общественного недействительными метода GetData(){
класс GetDataJSON расширяет AsyncTask<string,> {

@Ручная коррекция
защищенная строка doInBackground(String... параметры) {

DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());

// Протоколы HttpPost протоколы HttpPost = новые протоколы HttpPost(URL-адрес);

// Зависит от вашего веб-сервиса
// протоколы HttpPost.действие setheader("принять", "приложение/JSON");
// протоколы HttpPost.действие setheader("содержимое-тип", "приложение/JSON");

HttpGet httpget = новый HttpGet(url);
httpget.setHeader("Accept", "application/json");
httpget.setHeader("Content-type", "application/json");

// DefaultHttpClient httpClient = новый DefaultHttpClient();


InputStream inputStream = null;
Строковый результат = нуль;
пробовать {
// Ответ объект HttpResponse = с помощью HttpClient.выполнение(протоколы HttpPost);
Ответ объект HttpResponse = с помощью HttpClient.инструкции execute(httpget);

HttpEntity лицо = ответ.его код();
InputStream в = лицо.getContent();

// HttpResponse response = httpClient.execute(запрос);
// HttpEntity responseEntity = response.getEntity();
// InputStream в = responseEntity.getContent();

// json-это UTF-8 по умолчанию

Командой bufferedreader читатель = читает(новый InputStreamReader(InputStream в, "кодировка UTF-8"), 8);

// BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, HTTP.UTF_8), 8);

Проверьте новое окно инструментов();

Строки = значение null;
в то время как ((строка = читатель.с readline()) != нуль)
{
sb.append(строка + "\n");
}
результат = sb.toString();
} catch (исключение e) {
// Ой
}
наконец {
пробовать{
если(класса InputStream != нулевого)класса InputStream.рядом();
}
поймать(исключение хлюпать)
{

}
}
возвращаемый результат;
}

@Ручная коррекция
protected void onPostExecute(строковый результат){
myJSON=результат;
showList();
}
}
GetDataJSON g = новый GetDataJSON();
г. выполнение();
}

Что я уже пробовал:

я пытаюсь показать свою строку json в android listView, но всегда обнаруживаю ошибку
значение типа java.lang.Строка не может быть преобразована в JSONArray .

1 Ответов

Рейтинг:
1

Member 13542714

В вашей строке Json удалите двойные кавычки, и строка будет выглядеть следующим образом

{"JSONDataResult":[{\"Id\":1,\"Name\":\"Umair\",\"SSN\":\"11111111\"},{\"Id\":2,\"Name\":\"khan\",\"SSN\":\"2222222\"}]}