[CONTAINER-339] [S2Container] JSONSerializer を deprecated にしました.代わりに JSONIC 等を使用してください. Created: 2009-01-23 Updated: 2009-01-29 Resolved: 2009-01-26 |
|
| Status: | Resolved |
| Project: | S2Container |
| Component/s: | S2Container |
| Affects Version/s: | 2.4.33 |
| Fix Version/s: | 2.4.34 |
| Type: | Bug | Priority: | Minor |
| Reporter: | masunaga | Assignee: | koichik |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Environment: |
jdk1.6.0_10 |
||
| Description |
|
JSON文字列で与えられるデータの最後に配列があるとJSONSerializer解析に失敗する 例) は正しく解析してlist1を取得できるが、並び順をかえた {"str1":"value1","str2":"value2","list1":["value3","value4"]}は解析に失敗して 利用上の暫定的なワークアラウンドとしてはデータの順番を変えるか、配列の後ろに // Issue再現用テストコード package test; import java.util.HashMap; import org.seasar.framework.util.JSONSerializer; public class JSONSerializerBugTest {
String str11 = (String)obj1.get("str1"); String str12 = (String)obj1.get("str2"); List<String> list11 = (List<String>)obj1.get("list1"); // JSONデータ並び順 String,String,List<String> の場合 "; String str21 = (String)obj2.get("str1"); String str22 = (String)obj2.get("str2"); List<String> list21 = (List<String>)obj2.get("list1"); // テストコード実行結果 jsonData1= {"list1":["value3","value4"],"str1":"value1","str2":"value2"}obj1.str1=value1 obj2.str1=value1 |
| Comments |
| Comment by koichik [ 2009-01-26 ] |
|
JSONSerializer を deprecated にしました. |
| Comment by koichik [ 2009-01-26 ] |
|
ありがとうございます. |
| Comment by masunaga [ 2009-01-26 ] |
|
ご調査いただき、また注意点につきましてもご教示いただきまして誠にありがとうございました。 |
| Comment by koichik [ 2009-01-26 ] |
|
JSONSerializer の実装ですが,率直に言って実用レベルとは言い難く,きちんと対応するとなると現在の実装を捨てて書き直す必要があります. 大変申し訳ありませんが,JSONIC 等他のライブラリの使用を検討いただけないでしょうか. JSONSerializer は @deprecated とさせていただきたいと考えています. 注意点として,JSONSerializer は文字列にダブルクオートに加えてシングルクオートも許していますが,正式な JSON の仕様ではダブルクオートのみが許されています. |