2016-04-01 2 views
1

У меня есть JSONObject, который содержит, как показано ниже, и созданный класс Markets содержит все поля. Я хочу поставить JSONObject элементов для созданного объекта Markets.Указанный объект от JSONObject

Пример: Markets markets = new Markets(), затем положить элементы от JSONObject до markets, и я хочу иметь возможность получить markets.getInstrumentName(). Как я могу это сделать ?

Я стараюсь использовать Gson, как это Markets markets = gson2.fromJson(jsonObject, Markets.class);, но есть разные типы, и это неправильный путь.

JSONObject:

{ 
    "map": { 
    "netChange": -81.0, 
    "instrumentType": "INDICES", 
    "percentageChange": -1.31, 
    "scalingFactor": 1, 
    "epic": "IX.D.FTSE.DAILY.IP", 
    "updateTime": "00:02:48", 
    "updateTimeUTC": "23:02:48", 
    "offer": 6095.8, 
    "instrumentName": "FTSE 100", 
    "high": 6188.3, 
    "low": 6080.8, 
    "streamingPricesAvailable": true, 
    "marketStatus": "TRADEABLE", 
    "delayTime": 0, 
    "expiry": "DFB", 
    "bid": 6094.8 
    } 
} 

Markets:

class Markets { 
    private double bid; 
    private double offer; 
    private int delayTime; 
    private String epic; 
    private String expiry; 
    private double high; 
    private double low; 
    private String instrumentName; 
    private String instrumentType; 
    private String marketStatus; 
    private double netChange; 
    private double percentageChange; 
    private int scalingFactor; 
    private boolean streamingPricesAvailable; 
    private String updateTime; 
    private String updateTimeUTC; 

    //getters and setters 
} 
+0

Вы читали [фантазии руководство] (https://sites.google.com/site/gson/gson-user-guide)? Здесь полно примеров. –

+0

Я прочитал базовую документацию. – czArek

+0

Вам, вероятно, нужен класс «Карта» с одним полем типа «Рынки» и «Именованная карта», если это ваша трудность. –

ответ

3

Использование библиотеки Джексон

JSONObject jsonObject = //... 
ObjectMapper mapper = new ObjectMapper(); 
Markets markets = mapper.readValue(jsonObject.toString(), Markets.class); 
+0

Мне тоже нужно использовать 'Gson' – czArek

+1

. Пробовал? 'Рынки рынков = новый Gson(). FromJson (jsonObject.toString(), Markets.class); ' – Wizbot

+0

Да, это работает, я забыл написать' jsonObject.toString() '' '.toString()' был нужен;) – czArek

2

Ниже приведен пример кода, если вы хотите, чтобы преобразовать JSON объекта:

yourObject = new Gson().fromJson(yourJSONObject.toString(), YourObject.class); 

Я использую Gson 2.4. и он отлично работает.

compile 'com.google.code.gson:gson:2.4' 
Смежные вопросы