0

这是我的图表"seriesType": { "code": "83001", "$": "Série" } 如何用 json jackson 解析这个 json?我不能,因为美元符号正在产生错误。

我试过这个

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)

4

1 回答 1

1

只需添加@JsonProperty注释:

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

假设您的问题出在 Java 编译器上,它不允许您在名称中使用美元字符(因为它在内部如何使用内部类名称等)。

编辑:

查看确切的 JSON,另一个潜在问题很简单:您的结构不匹配。您需要一个包装对象:

public class DollarWrapper {
    public Dollar seriesType
}

并绑定到那个。但像往常一样,这种额外的包装似乎……嗯,额外的。为什么服务坚持要加呢?

于 2011-12-29T19:45:45.270 回答