我正在尝试将一些List
对象存储到JSONArray中并将其读回。
如果是List<String>
,它的工作正常。但如果我和List<Cookie>
尝试相同,那就不行了。
工作示例如下:
package com.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.sf.json.JSONArray;
public class Test {
public static void main( String[] args ) throws Exception {
JSONArray jsonArr = new JSONArray();
List<String> arrLst = new ArrayList<String>();
arrLst.add( "one" );
arrLst.add( "two" );
jsonArr.add( arrLst );
Iterator<List> it1 = jsonArr.iterator();
while ( it1.hasNext() ) {
List<String> fg = (List<String>) it1.next();
fg.forEach( str -> {
System.out.println( str );
} );
}
}
}
上述代码的输出是:
one
two
我稍微改变了以上代码:
package com.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.Cookie;
import net.sf.json.JSONArray;
public class Test {
public static void main( String[] args ) throws Exception {
JSONArray jsonArr = new JSONArray();
List<Cookie> arrLst = new ArrayList<Cookie>();
arrLst.add( new Cookie( "one", "1" ) );
arrLst.add( new Cookie( "two", "2" ) );
jsonArr.add( arrLst );
Iterator<List> ite = jsonArr.iterator();
while ( ite.hasNext() ) {
List<Cookie> cookieLst = (List<Cookie>) ite.next();
cookieLst.forEach( cookie -> {
System.out.println( cookie.getName() );
} );
}
}
}
上述代码的输出是:
Exception in thread "main" java.lang.ClassCastException: net.sf.json.JSONObject cannot be cast to javax.servlet.http.Cookie
at java.lang.Iterable.forEach(Unknown Source)
at com.test.Test.main(Test.java:34)
我能做些什么呢?