バギー

  • 投稿日:
  • カテゴリ:

JSONの公式ライブラリというか、公式ライブラリを拡張したライブラリJSON-LIBという物があるんです。
Javaによる実装です。

自前でBeanとマッピングするEncoderとDecoderを作っていたのですが、最新版が出ていたので試してみました。まぁタイトル通り、バギーなライブラリなんですがね。
JUnitのテストケースが1/3くらいしか通りません・・・。
しかも、自前ライブラリよりも遅いと来た(;´∀`)

んで、今日はちょこちょことライブラリを改修してたわけですが・・・
致命的な不具合を発見・・・。

Listの配列はJsonArrayのJsonArrayとみなしており、上手く処理できてません。
new ArrayList[]{new ArrayList(), new ArrayList()}
Encodeで[[],[]]となり、これをDecodeするとエラーが発生しました。

あとは、
class PojoA {
  private PojoB[] field = new PojoB[] {
    new PojoB(2001,2,3),
    new PojoB(2002,12,3),
    new PojoB(2003,12,23),
  }
  // getter. setter
}
class PojoB {
  private int year;
  private int month;
  private int date;
  // getter, setter, ctor
}
こんな感じでPojoAをEncode→Decodeできません。
PojoBの配列を処理するときに、
PojoBのフィールドを列挙して・・・ PojoAからそのフィールド名を使ってSetterを取得しようとしていたり・・。なんという不具合。
あとは、JSONではnullもデータ型として定義されているのに、nullの扱いが中途半端。
配列の要素や、BeanからDecodeするときにStringのnullは""にしたり、Integerなどは0にしたり・・・。
primitiveとラッパーを分離して考えて欲しい。むしろStringのnullを""に置き換えるのは如何な物かと・・。
Characterクラスの扱いも中途半端。charのnullを{}と変換したり・・・。

まぁ公式のJSONの実装も、Mapの要素をそのままtoStringしてたりと、再帰的に処理してないわけですが。いい加減すぎる・・・。明日もこの作業か・・・つらい・・。

疲れたよ(´・ω・`)

 

あと、ノートのMSNが接続不能になりました。
他のPCからは接続できる・・・。バージョンが問題なのかな。
2chを見たら同じ症状の人がいたので、レジストリを削除したら起動できるようになりました。
まったく。MSめ!!

新しいサイトもよろしくお願いします!