在java中解析json时,无法将java.util.Vector转换为java.util.ArrayList错误
我想使用arraylist而不是vector,因为arraylist提供了更好的性能等。但是代码也使用vector。我不明白当我使用json_编码时,有时它可以在arraylist中解析,有时可以在vector中解析。将json解析值转换为vector和arraylist有什么区别?是来自模型/控制器(这里使用的CI)还是我必须在JavaJSON解析器中执行不同的smth 编码点火器控制器:在java中解析json时,无法将java.util.Vector转换为java.util.ArrayList错误,java,json,codeigniter,codenameone,Java,Json,Codeigniter,Codenameone,我想使用arraylist而不是vector,因为arraylist提供了更好的性能等。但是代码也使用vector。我不明白当我使用json_编码时,有时它可以在arraylist中解析,有时可以在vector中解析。将json解析值转换为vector和arraylist有什么区别?是来自模型/控制器(这里使用的CI)还是我必须在JavaJSON解析器中执行不同的smth 编码点火器控制器: $data = $this->member->view_members(); header(
$data = $this->member->view_members();
header('Content-Type: application/json');
echo json_encode($data);
CI模型:
$queries = $this->db->get('members');
return $queries->result();
json:
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
}
.........
}
ConnectionRequest ConnectionRequest=new ConnectionRequest(){
@凌驾
受保护的void readResponse(InputStream输入)引发IOException{
JSONParser JSONParser=新的JSONParser();
Map parsedData=jSONParser.parse(新的InputStreamReader(input));
response=(ArrayList)parsedData.get(“root”);//错误消息:java.util.Vector无法转换为java.util.ArrayList
}
.........
}
是旧的解析方法(注意在javadocs中不推荐使用),它使用哈希表和向量
你需要使用
jSONParser.parseJSON(new InputStreamReader(input));
它使用HashMap和ArrayList,这是一个向量,这两种类型不相关。生成
响应
一个向量
,或者将其内容复制到ArrayList
中。或者更好的方法是,使用Jackson或Gson完全解析它。@Andy Turner我已经提到过,我可以生成响应向量并工作,但有时我可以直接在ArrayList中工作。这就是为什么我问我是否可以在这里做smth?@beck,那么做我建议的另一件事。new ArrayList(someVector)
将使用someVector
中的相同元素创建一个新的ArrayList
。除非您知道使用Vector
会因为其方法被同步而给您带来性能问题,否则我不会为此费心。然而,我强烈怀疑情况是否如此。
jSONParser.parse(new InputStreamReader(input));
jSONParser.parseJSON(new InputStreamReader(input));