2016-05-04 43 views
2

由于ArrayList提供了更好的性能等,所以我想使用arraylist而不是vector。但是代码也使用向量。我不明白当我使用json_encode,有时它可以在arraylist中,有时在矢量中解析。将json解析值转换为vector和arraylist会有什么区别?它是从模型/控制器(CI在此使用)还是我可以在java json解析器中做不同的处理?在java中解析json时,java.util.Vector不能转换为java.util.ArrayList错误

笨控制器:

$data = $this->member->view_members(); 
header('Content-Type: application/json'); 
echo json_encode($data); 

CI模型:

$queries = $this->db->get('members'); 
return $queries->result(); 

JSON:

[{ "id": "1", 
    "name": "Magalamind Industries", 
    "tableGroup": "Birgunj rising round table 20", 
    "email": "[email protected]", 
    "position": "Senior Member", 
    "address": "Birgunj", 
    "phn": "9876543234", 
    "date": "2016-05-03 15:53:51", 
    "active": "1"}, 
{ "id": "2", 
    "name": "Ram kumar Sharma", 
    "tableGroup": "Lalitpur round table 5", 
    "email": "[email protected]", 
    "position": "Recent Member", 
    "address": "Patandhoka, lalitpur", 
    "phn": "9876567890", 
    "date": "2016-05-03 15:53:51", 
    "active": "1"}] 

的java JSON解析与错误味精:java.util.Vector中不能转换成Java .util.ArrayList

ConnectionRequest connectionRequest = new ConnectionRequest() {  
    @Override 
    protected void readResponse(InputStream input) throws IOException { 
     JSONParser jSONParser = new JSONParser(); 
     Map<String,Object> parsedData = jSONParser.parse(new InputStreamReader(input)); 
     response = (ArrayList) parsedData.get("root"); //error msg: java.util.Vector cannot be cast to java.util.ArrayList 
    } 
    ......... 
} 
+1

嗯,这是一个'VECTOR',并且这两种类型都没有关系。使'response'成为'Vector',或将其内容复制到'ArrayList'中。 –

+0

甚至更​​好,用Jackson或Gson完全解析它。 – chrylis

+0

@AndyTurner我已经在上面提到过,我可以制作响应矢量和工作,但有时我可以直接在arraylistm中工作。这就是为什么我问我是否可以在这里做水手? – beck

回答

2

jSONParser.parse(new InputStreamReader(input)); 

是旧的解析方法(注意它在的javadocs弃用),它使用哈希表和载体。

您需要使用

jSONParser.parseJSON(new InputStreamReader(input)); 

其中使用HashMap和ArrayList的

相关问题