net.sf.json.JSONObject无法强制转换为javax.servlet.http.Cookie

时间:2017-02-01 10:00:56

标签: java casting

我正在尝试将一些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)

我能做些什么呢?

0 个答案:

没有答案