获取的json中未包含括号
我在Servlet上有以下代码获取的json中未包含括号,json,ajax,servlets,highcharts,Json,Ajax,Servlets,Highcharts,我在Servlet上有以下代码 Map<String, Object> data = new HashMap<String, Object>(); data.put( "x", "[[0, 29.9],[1, 71.5],[3, 106.4]]" ); data.put( "y", "[[0.5, 28],[1.5, 60],[3, 100]]" );
Map<String, Object> data = new HashMap<String, Object>();
data.put( "x", "[[0, 29.9],[1, 71.5],[3, 106.4]]" );
data.put( "y", "[[0.5, 28],[1.5, 60],[3, 100]]" );
data.put("z","[[0.2, 20],[1.5, 40],[3, 120]]");
JSONObject json = new JSONObject();
json.putAll( data );
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().println(json);
问题是控制台上打印的每个值都删除了[]
x0,29.9,1,71.5,3106.4
y 0.5,28,1.5,60,3100
z 0.2,20,1.5,40,3120
我期待着看到这个
x[[0,29.9],[1,71.5],[3106.4]]
y[[0.5,28],[1.5,60],[3100]]
z[[0.2,20],[1.5,40],[3120]]
但这并没有发生!
你知道为什么要拆下支架,怎么做才能把它们取回来吗
谢谢,
索林问题:
您可以从数据
映射创建JSON:
data.put( "x", "[[0, 29.9],[1, 71.5],[3, 106.4]]" );
data.put( "y", "[[0.5, 28],[1.5, 60],[3, 100]]" );
data.put("z","[[0.2, 20],[1.5, 40],[3, 120]]");
这将产生一个JSON字符串,该字符串类似于:
{
"x": [[0, 29.9],[1, 71.5],[3, 106.4]],
"y": [[0.5, 28],[1.5, 60],[3, 100]],
"z": [[0.2, 20],[1.5, 40],[3, 120]]
}
现在用JavaScript术语来说,当浏览器看到这个结果时,它将把它解释为一个带有键的对象,x,y,z
,每个键都有一个数组作为其值。这就是为什么您没有在控制台中显示[]
,这是因为[]
用于指示JSON中的数组,并且在解释值后不再需要该数组。如果要强制执行字符串,请尝试使用:
data.put( "x", "\"[[0, 29.9],[1, 71.5],[3, 106.4]]\"" );
data.put( "y", "\"[[0.5, 28],[1.5, 60],[3, 100]]\"" );
data.put("z","\"[[0.2, 20],[1.5, 40],[3, 120]]\"");
json术语中的
[[1,2]]
属于Array[Array]
类型,而不是Array[String]
非常感谢,非常好的回答,作为json和AJAX的初学者,这可能是我提出的一个愚蠢的问题。。。
data.put( "x", "\"[[0, 29.9],[1, 71.5],[3, 106.4]]\"" );
data.put( "y", "\"[[0.5, 28],[1.5, 60],[3, 100]]\"" );
data.put("z","\"[[0.2, 20],[1.5, 40],[3, 120]]\"");