tfunatoです。
JAXBはそもそも、XMLをJavaオブジェクトにマッピングするための仕様で、
JSONについては扱っていなかったと思います。
なので、単純にJSONをJavaオブジェクトにマッピングするのであれば、
JSONを扱うライブラリを使用したほうがいいかなと思います。
# JAX-RSとJAXBを使用したRESTなフレームワークでは大概JSONを扱えたりしますが。。。
上記のJSONをマッピングするサンプルを添付しました。
また、こうしたほうがいいんじゃないかという、JSONの構造のサンプルも追加してます。
JSONを扱うライブラリは幾つかあるのですが、今回はJacksonというライブラリを使用しています。
http://jackson.codehaus.org/
--
Takashi Funato
tfu...@gmail.com
http://www.canetrash.jp/
http://d.hatena.ne.jp/tfunato/
これもたまたま、Jersey+JAXBでJSON出力を実現したことがあったので。
たしか、以下のページを参考にしました。
http://jersey.576304.n2.nabble.com/JSONJAXBContext-td4176738.html
現在ぼくの手元で動作しているコードはこちら(一年くらい前に書いたコードです)。
下のクラスをJAX-RSに食わせれば実現した、ような。
参考になれば幸いです。よろしくお願い致します。
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import javax.xml.bind.JAXBContext;
import com.sun.jersey.api.json.JSONConfiguration;
import com.sun.jersey.api.json.JSONJAXBContext;
/**
*
* @author shumpei
*/
@Provider
public final class JSONJAXBContextResolver implements
ContextResolver<JAXBContext> {
private final JAXBContext context;
private final Set<Class<?>> types;
private final Class<?>[] cTypes =
{
A.class, B.class
};
public JSONJAXBContextResolver() throws Exception {
this.types = new HashSet<Class<?>>(Arrays.asList(cTypes));
this.context =
new JSONJAXBContext(JSONConfiguration.natural().build(), cTypes);
}
public JAXBContext getContext(Class<?> objectType) {
return (types.contains(objectType)) ? context : null;
}
}
2011年5月19日1:24 Takashi Funato <tfu...@gmail.com>:
> --
> このメールは Google グループのグループ「java-ja」の登録者に送られています。
> このグループに投稿するには、jav...@googlegroups.com にメールを送信してください。
> このグループから退会するには、java-ja+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/java-ja?hl=ja からこのグループにアクセスしてください。
>
>