Как проанализировать JSON-граф со специальной символьной аннотацией с помощью Json Jackson? - PullRequest
0 голосов
/ 29 декабря 2011

вот мой график "seriesType": { "code": "83001", "$": "Série" } Как мне разобрать этот json с json jackson? Я не могу, потому что знак доллара генерирует ошибку.

я попробовал это

public Dollar serieType;
public class Dollar {
public int code;
public String $;

}

// is is the input stream
jp = jsonFactory.createJsonParser(is);
        serieType = objectMapper.readValue(jp, Dollar.class);
 strBuffer.append("serieType: " + dollar.$ + "\n");

// Это то, что я попробовал, я уверен, что проблема вызвана знаком доллара.

Я попытался получить значение, подобное этому String s=tvseries.serieType.$, и это трассировка стека 01-02 10:48:03.905: W/ActivityManager(58): Launch timeout has expired, giving up wake lock! 01-02 10:48:04.623: W/ActivityManager(58): Activity idle timeout for HistoryRecord{5b799e28 com.test.jackson/.MainAlloCine} 01-02 10:48:07.886: W/System.err(275): java.lang.NullPointerException 01-02 10:48:07.895: W/System.err(275): at com.test.jackson.MainAlloCine.onCreate(MainAlloCine.java:49) 01-02 10:48:07.895: W/System.err(275): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-02 10:48:07.895: W/System.err(275): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 01-02 10:48:07.895: W/System.err(275): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 01-02 10:48:07.895: W/System.err(275): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 01-02 10:48:07.895: W/System.err(275): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 01-02 10:48:07.895: W/System.err(275): at android.os.Handler.dispatchMessage(Handler.java:99) 01-02 10:48:07.895: W/System.err(275): at android.os.Looper.loop(Looper.java:123) 01-02 10:48:07.895: W/System.err(275): at android.app.ActivityThread.main(ActivityThread.java:4627) 01-02 10:48:07.895: W/System.err(275): at java.lang.reflect.Method.invokeNative(Native Method) 01-02 10:48:07.895: W/System.err(275): at java.lang.reflect.Method.invoke(Method.java:521) 01-02 10:48:07.905: W/System.err(275): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 01-02 10:48:07.905: W/System.err(275): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 01-02 10:48:07.905: W/System.err(275): at dalvik.system.NativeStart.main(Native Method)

1 Ответ

1 голос
/ 29 декабря 2011

Просто добавьте @JsonProperty аннотацию:

@JsonProperty("$")
public String value; // or whatever name you want

при условии, что ваша проблема связана с компилятором Java, который не позволяет использовать символ доллара в именах (потому что он использует его внутренне, как внутренние имена классов и т. Д.).

РЕДАКТИРОВАТЬ:

Глядя на точный JSON, другая потенциальная проблема проста: ваша структура не совпадает.Вам нужен один объект-обертка:

public class DollarWrapper {
    public Dollar seriesType
}

и привязка к нему.Но, как обычно, этот дополнительный уровень упаковки кажется ... ну, дополнительный.Почему сервис настаивает на добавлении?

...