В приведенном ниже примере показано, как читать текст в вопросе, представленный как переменная jsonText. Это решение использует API Java EE7 javax.json (о чем упоминается в некоторых других ответах). Причина, по которой я добавил его в качестве отдельного ответа, состоит в том, что следующий код показывает, как фактически получает доступ к некоторым значениям, указанным в вопросе. Для выполнения этого кода потребуется реализация javax.json API . Полный пакет для каждого из необходимых классов был включен, так как я не хотел объявлять «импортные» операторы.
javax.json.JsonReader jr =
javax.json.Json.createReader(new StringReader(jsonText));
javax.json.JsonObject jo = jr.readObject();
//Read the page info.
javax.json.JsonObject pageInfo = jo.getJsonObject("pageInfo");
System.out.println(pageInfo.getString("pageName"));
//Read the posts.
javax.json.JsonArray posts = jo.getJsonArray("posts");
//Read the first post.
javax.json.JsonObject post = posts.getJsonObject(0);
//Read the post_id field.
String postId = post.getString("post_id");
Теперь, прежде чем кто-либо пойдет и опустит этот ответ, потому что он не использует GSON , org.json, Jackson или любой из других сторонних фреймворков, это пример «требуемого кода» на вопрос для анализа предоставленного текста. Мне хорошо известно, что соблюдение существующего стандарта JSR 353 не рассматривалось для JDK 9 , и поэтому JSR 353 spec следует рассматривать так же, как и любая другая сторонняя сторона JSON.
См. тестовые примеры в http://greenbytes.de/tech/tc2231/#inlwithasciifilenamepdf - кажется, что это просто недостающая функция в IE.
В случае INLINE кажется, что Internet explorer использует последний параметр в URL для создания имени файла. Например, если ваш URL-адрес http://doc.com/131231231 IE предложит вам сохранить файл как 131231231.pdf Если вам нужно имя файла, например foo_131231231.pdf, вы можете взломать IE используя этот url: http://doc.com/foo_131231231 Возможно, вам придется немного изменить свое приложение, чтобы ожидать такой уродливый параметр, но в конце ваше приложение будет работать так, как вы ожидаете.
Я также столкнулся с этой проблемой. То, что помогло мне, было также установить для contenttype значение application/pdf
(вместо устаревшего application/x-pdf
)
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "inline; filename=\"Report.pdf\"");