Я хотел бы проанализировать данные из JSON, который имеет тип String
. Я использую Google Gson .
У меня есть:
jsonLine = "
{
"data": {
"translations": [
{
"translatedText": "Hello world"
}
]
}
}
";
и мой класс:
public class JsonParsing{
public void parse(String jsonLine) {
// there I would like to get String "Hello world"
}
}
Ответы:
Это простой код для этого, я избежал всех проверок, но это основная идея.
Чтобы сделать использование более общим - вы обнаружите, что Javadocs Гсона довольно понятны и полезны.
источник
В моем первом приложении gson я избегал использования дополнительных классов для перехвата значений, потому что я использую json для настройки
несмотря на недостаток информации (даже страницы gson), я нашел и использовал ее:
начиная с
Каждый раз, когда gson видит {}, он создает карту (на самом деле StringMap gson)
Каждый раз, когда gson видит '', он создает строку
Каждый раз, когда гсон видит число, он создает двойной
Каждый раз, когда gson видит [], он создает ArrayList
Вы можете использовать эти факты (в сочетании) в ваших интересах
Наконец, это код, который делает вещь
источник
Обычно проще всего создать соответствующую иерархию объектов, например:
а затем связать с помощью GSON, пройти через иерархию объектов через поля. Добавлять геттеры и сеттеры бессмысленно для базовых контейнеров данных.
Так что-то вроде:
источник
Вы можете создать соответствующие классы Java для объектов JSON. Целочисленные, строковые значения могут отображаться как есть. Json может быть разобран так
Вот пример - http://rowsandcolumns.blogspot.com/2013/02/url-encode-http-get-solr-request-and.html
источник
Вы можете использовать отдельный класс для представления объекта JSON и использовать
@SerializedName
аннотации для указания имени поля, которое нужно получить для каждого элемента данных:Затем вы можете выполнить синтаксический анализ в вашем методе parse (), используя
Gson
объект:При таком подходе вы можете повторно использовать
Response
класс для добавления любых других дополнительных полей, чтобы выбрать другие элементы данных, которые вы, возможно, захотите извлечь из JSON - в случае, если вы хотите внести изменения, чтобы получить результаты, скажем, для нескольких переводов за один вызов, или получить дополнительную строку для обнаруженного исходного языка.источник
Одним из способов будет создание JsonObject и итерация по параметрам. Например
Затем вы можете извлечь значения bean-компонентов:
Надеюсь это поможет.
источник
Используя Gson для решения,
я бы создал класс для отдельного параметра в строке json. В качестве альтернативы вы можете создать один основной класс с именем «Данные», а затем аналогичным образом создать внутренние классы. Я создал отдельные классы для ясности.
Классы следующие.
В классе JsonParsing мы вызываем метод "parse",
gson.fromJson(jsonLine, Data.class)
который преобразует String в java-объекты, используя Reflection.Получив доступ к объекту «Данные», мы можем получить доступ к каждому параметру в отдельности.
У меня не было возможности протестировать этот код, так как я вдали от своей машины разработчика. Но это должно помочь.
Несколько хороших примеров и статей.
http://albertattard.blogspot.com/2009/06/practical-example-of-gson.html
http://sites.google.com/site/gson/gson-user-guide
Код
источник
private String translatedText
не нарушая контроль доступа, поэтому нет способаfromJSON
установить его в JVM, которые не включили отражение, попирающее контроль доступа.Простой пример, чтобы разобрать JSON, как это
источник
Сначала создайте Getter And Setter, используя нижеприведенный сайт
http://www.jsonschema2pojo.org/
Теперь используйте Gson
Теперь используйте объект для получения таких значений, как data, translationText
источник
Вы можете использовать запрос JsonPath для извлечения значения. А с JsonSurfer, который поддерживается Gson, ваша проблема может быть решена с помощью двух строк кода!
источник
Однострочный код:
источник