2011-12-29 161 views
0

这是我的图"seriesType": { "code": "83001", "$": "Série" } 如何解析json与json jackson?我无法这样做,因为美元符号会产生错误。如何使用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)

回答

1

只需添加@JsonProperty注释:

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

假设你的问题是与Java编译器,不会让你使用美元字符在名称中(因为它在内部使用内部类名称等)。

编辑:

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

public class DollarWrapper { 
    public Dollar seriesType 
} 

并绑定到那。但像往常一样,这种额外的包装水平似乎......好吧,额外的。为什么服务坚持要添加它?

+0

谢谢你,但它仍然无法读取值:'( – Vervatovskis 2011-12-29 23:22:37

+0

那么是什么问题?异常,缺少值或什么?顺便说一下,你的结构是错误的:它必须匹配 – StaxMan 2011-12-30 01:09:12

+0

应用程序崩溃时,他阅读“$”,我相信100%的结构是正确的,我总是使用json和parser。这是你可以看一下的图形,[graph](http://api.allocine.fr/rest/v3/ tvseries?partner = YW5kcm9pZC12M3M&code = 223&profile = large&mediafmt = mp4-lc&format = json&striptags = synopsis,synopsisshort) – Vervatovskis 2011-12-30 15:07:16