У меня есть массив в Json, который выводит:
print json_decode($array);
Строка приводит к:
{"dbonline":true,"success":true,"action":"geturls","authorized":true,
"urls":[
{"url":"http:\/\/www.namhost.com"},
{"url":"http:\/\/www.voomka.com"},
{"url":"http:\/\/www.ournamibia.com"}]
}
Обратите внимание на//часть. Вот как я вернусь от этого:
header('Content-Type: application/json');
echo json_encode($result);
Затем я использую Java для захвата URL-адреса, где это печатается, и затем я разбираю его:
private ArrayList<String> extractUrls(String jsonText)
{
ArrayList<String> urlResults = new ArrayList<String>();
JsonParserFactory factory = JsonParserFactory.getInstance();
JSONParser parser = factory.newJsonParser();
Map jsonData = parser.parseJson(jsonText);
ArrayList urlList = (ArrayList)jsonData.get("urls");
for (Object u : urlList)
{
HashMap hashmap = (HashMap)u;
String url = hashmap.get("url").toString();
urlResults.add(url);
}
return urlResults;
}
Проблема заключается в том, что возвращаемый массив имеет значения:
[0] = (String) "http:\\/\\/www.namhost.com\\/blog\\/2014-06-11\\/how-to-choose-right-software-solution"
Другими словами, json "slashing" не был удален. Я не хочу вручную удалять его здесь, так как кажется, что проблема, вероятно, связана с синтаксическим разбором.
Любые идеи, как это исправить?
Просто попробуйте этот код: нет необходимости в escape-последовательности
{"dbonline":true,"success":true,"action":"geturls","authorized":true,
"urls":[
{"url":"http://www.namhost.com"},
{"url":"http://www.voomka.com"},
{"url":"http://www.ournamibia.com"}]
}