2 ganji1 ganji1 于 2016.01.21 11:19 提问

关于Json value值取消双引号问题

我现在需要获得一个Json,格式如下:
var data_d = {"id":"root","text":"根节点","isExpand":"true","childNodes":[{"id":"org1","text":"软件","showCheck":"true"}]};

其中:childNodes对应是一个数组,[{value}],需要这样的格式。
我在后台处理的代码如下:
Map map = new HashMap();
map.put("id", "root");
map.put("text", "根节点");
map.put("isExpand", "true");
map.put("childNodes", "["+hmap()+"]");

private static Map hmap(){
Map map = new HashMap();
map.put("id", "root");
map.put("text", "根节点");
map.put("showCheck",true);
return map;
}

String map2 = mapToJson(map);

打印出来的结果是:
[json]: [{"id":"root","text":"根节点","isExpand":"true","childNodes":"[{id\u003droot, text\u003d根节点, showCheck\u003dtrue}]"}]

格式不符合,换一种,直接用json:
JSONObject json = new JSONObject();
        json.put("id", "root");
        json.put("text", "根节点");
        json.put("isExpand", "true");
        json.put("childNodes", "["+con2List().toString().replace("\"", "'")+"]");

private static JSONObject con2List() throws JSONException{
        JSONObject jo = new JSONObject();
        jo.put("id", "org1");
        jo.put("text", "软件");
        jo.put("showCheck", "true");
        return jo;
}

打印出来的结果是:
[json]: {"id":"root","text":"根节点","isExpand":"true","childNodes":"[{'id':'org1','text':'软件','showCheck':'true'}]"}

格式也不符合,childNodes对应的是:"[{value}]",多了双引号。

有人说这个是标准的json格式,但是我需要的就是开头那样的格式,json也好,string也好都可以。

求大神来解答。

2个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.01.21 12:11
已采纳
  json.put("childNodes", "["+con2List().toString().replace("\"", "'")+"]");
    这里应该把con2List先转成JsonArray
    然后put该jsonarray

ganji1
ganji1 正确,按照你这方法成功了
2 年多之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.01.21 11:36

json格式的数据,key和value都是有双引号的,如果你最终处理时需要去掉双引号的话,可以再进行一次字符串的替换操作,将"替换为空格。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java JSON数据解析中关于字段双引号的问题
Java后写写API接口的时候,返回的数据字段有部分有“”,在客户端赋值的时候,取不到。经过对比发现,该字段在Java实体类中定义为带有下划线的字段名。 因为对应的数据库字段有下划线,所以定义为带有下划线的咯。就是因为这个问题,导致了这个问题。 解决方法:如数据库字段picture_url,我们定义实体的时候定义为:pictureUrl。 截图如下:以上是我在Java API接口编写中遇到的问
解决json string转object,value值存在英语双引号,无法解析问题
解决json string转object,value值存在英语双引号,无法解析问题
把json串中“:”前面名称部分的双引号去掉,值中的双引号保留
原字符串: [{'y': 2, 'url': '/disaster/collect/1/', 'name': u'\u9707\u611f'}, {'y': 0, 'url': '/disaster/collect/2/', 'name': u'\u5efa\u7b51\u7269\u7834\u574f'}, {'y': 0, 'url': '/disaster/collect/3/', 'nam
转换json里面的Value里带双引号的方法。把双引号换成的中文双引号。转载
private static String jsonString(String s){ char[] temp = s.toCharArray(); int n = temp.length; for(int i =0;i;i++){ if(temp[i]==':'&&temp[i+1]=='"'){ for(int j =i+2;j;
input标签value值中带有引号的处理…
后台将数据处理成json数组,转成字符串后将字符串中的引号替换为html中的转义符号"即可。 注意: "后一定要加上英文分号,否则不起作用。 这样input的value值在js中就可以获取为一个字符串。
JSON字符串key缺少双引号的解决方法
JSON字符串key缺少引号的解决方法 JSON字符串是key:value形式的字符串,正常key是由双引号括起来的。
input文本框中value值有双引号的问题
当从数据库中,将某个带有双引号的字符串值读取回input文本框时,发现文本框中显示的内容与实际的值不符,只显示了实际值的一部分,这是由于值中的双引号与input标签中value属性的双引号冲突,value将值中第一个双引号误认为引号结束。 实际值: {"uu":"df5b93b1f0","vu":"5263c1cd15","pu":"1c0d5cd1db","auto_play":0,"gpc
input 的value 含有英文双引号问题
input的value用正则表达式接收,由于数据含有英文双引号,导致input没显示出数据。若是用js对input赋值,则无此问题,但此方式会导致代码太多,麻烦。故有了以下方式,将接收方式改为以下也可解决问题。 " />
js添加json出现key双引号问题
var cd = {}; var d = "  id:'idd',name:'wd'"; var c = d.split(','); c.forEach(function(data){     var cdd = data.split(':');     cd[cdd[0].trim()] = cdd[1].trim().replace(/\'/g, ''); }); cd.name
jsp页面input的value中的值含英文双引号处理方法
当数据库中某个字段带双引号时,input文本框使用Jstl表达式直接设置value值时,由于字段值中的双引号与input标签中value属性的双引号冲突会出现显示为空的不正常现象。