关于map转json问题

先把代码贴出来先
[code="java"]Map map = new HashMap();
map.put("aaaaaa", "ccccc");
map.put("bbbbbb", "dddddd");

    JSONArray json = JSONArray.fromObject(map);
    System.out.println(json);
    resp.setContentType("application/json,charset=utf-8");
    out.print(json.toString());
    out.flush();
    out.close();[/code]

这个是在servlet里面写的代码,输出的结果是[{"aaaaaa":"ccccc","bbbbbb":"dddddd"}],这个结果跟我在网上看到的结果不一样,按照网上的结果应该是这样的{"aaaaaa":"ccccc","bbbbbb":"dddddd"}。
再看看我在前台的代码吧。[code="java"]
$.getJSON("TestServlet","type=list",function(data){

            alert(data[0].aaaaaa);
        }

[/code]
我就不懂为什么我输出的结果是加了个最后面的方括号。另我在取值的时候不得不加上一个0,本来data.aaaaaa就一个可以打印ccccc出来的。
还有一个问题就是在我不知道map的key情况下应该怎么去出值啊?

还有一个问题就是在我不知道map的key情况下应该怎么去出值啊?

[code="java"]

$.getJSON("TestServlet","type=list",function(data){

for(var p in data){
    alert(data[p]);
}    

}
[/code]

[code="java"]
JSONArray json = JSONArray.fromObject(map);
// 这句改成下面这句就是{"aaaaaa":"ccccc","bbbbbb":"dddddd"}。

JSONObject json = JSONObject.fromObject(map); [/code]

[quote]还有一个问题就是在我不知道map的key情况下应该怎么去出值啊?[/quote]
什么意思?

只有当你返回数组json格式的数据时才需要使用JSONArray类,直接返回js对象格式的json时,需要直接使用JSONObject,这里你可以这样:
[code="java"]
JSONObject o = new JSONObject(map);
System.out.println(o);
[/code]

是不是用的struts2框 架,struts2自动调用get*,于是返回的是一个数组对象

首先, 你使用的JSONArray,应该使用JSONObject就可以。
其次, 如果你不想要里面的key,使用遍历将里面的key去掉:
Collection c = hash.values();
Iterator i = c.iterator();
ArrayList a = new ArrayList();
for(String s : i){
a.add(s);
}

JSONObject json = JSONObject.fromObject(a);
这样就ok了。

json有两种基本格式,一种是{}的对象格式。另一种就是[{},{}]对象数组格式。
你使用JSONArray转换的结果当然是对象数组了。
你直接使用JSONObject来转,不要用JSONArray