2013-06-03 2 views
0

извините, если вопрос был получен ранее, но я ничего не нашел.Использовать жестко закодированные строки json при разборе с gson

Проблема заключается в следующем: я использую GSON для сериализации/десериализации моих запросов и ответов json на объекты. Он работает хорошо, но в последнее время я столкнулся с проблемой при сериализации:

Я хочу отправить комплексный запрос. Так как я не проектировал стороне сервера я должен вмещать мой сам с тем, что они дают мне, так что я это JSON:

{ 
    "id": null, 
    "name": "n", 
    "description": "some description", 
    "type": 1, 
    "channel": 0, 
    "styles": [{ 
    "styleID": 1, 
    "style": {... // lots of properties nested one inside another } 
    }] 
} 

Проблема в том, что я не могу создать класс для каждого Подствойство «стиль» , которые являются: «событие», «кнопка», «метка» и т.д. ... Так я думал, что я бы поставил его так:

public class MyData { 
    private Integer id; 
    // ... 
    private String styles = getStylesJsonString(); // hardcoded styles in json format 
} 

Но я не могу, потому что в конце концов он становится :

"styles": "[{...}]" 

который является недействительно (согласно серверу).

Значит, любые идеи?

+0

Вы хотите, чтобы ** сериализовать ** некоторые классы, создающие ответ JSON вроде этого? или вы хотите, чтобы ** deserialize ** thar ответ JSON в некоторые классы? – MikO

+0

Дело в том, что мне нужно сериализовать и десериализовать объекты MyData в/из json, и единственной релевантной информацией является идентификатор, имя и тип. Но на стороне сервера они ожидают гораздо больше информации, например, стилей, и они также должны иметь определенные поля. Я думал, что для этой цели я бы использовал строчную кодировку. – jereshi

ответ

0

Ожидается ответ, поскольку вы назначаете строку JSON переменной, которая является не более чем самой строкой. Мое предложение использовать

private Object styles; 

и использовать GSON десериализацию, который будет конвертировать результат в карту или Список Карты.