js javascript 将一段字符串转为JSON格式,字符串转换问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js javascript 将一段字符串转为JSON格式,字符串转换问题相关的知识,希望对你有一定的参考价值。
字符串为
[
"同意",
"不同意"
]
将他转为
[
"text":"同意","value":"同意",
"text":"不同意","value":"不同意"
]
var arr = eval('('+str+')');
var newArray = [];
for (var i = 0 ; i < arr.length ; i++)
var obj = ;
obj.text = arr[i];
obj.value = arr[i];
newArray.push(obj);
alert(newArray);
或者
var str = '["同意","不同意"]';
var arr = JSON.parse(str);
var newArray = [];
for (var i = 0 ; i < arr.length ; i++)
var obj = ;
obj.text = arr[i];
obj.value = arr[i];
newArray.push(obj);
alert(newArray); 参考技术A 大概的思路是先把字符串还原成js数组,然后再创建一个新的数组格式为你下面的格式,然后在这个新的数组转成json串。
var obj1 = $.parseJSON(obj1Json);
var obj2 = [];
for(var i=0;i<obj1.length;i++)
obj2[i] = "text":obj1[i],"value":obj1[i];
alert(JSON.stringify(obj2)); 参考技术B 这是对的啊?然后呢?
你再卖弄?还是?
这可是一个陈述句。
javascript/node.js 中的 JSONP 解析
【中文标题】javascript/node.js 中的 JSONP 解析【英文标题】:JSONP parsing in javascript/node.js 【发布时间】:2019-01-04 03:50:40 【问题描述】:如果我有一个包含 JSONP 响应的字符串,例如"jsonp([1,2,3])"
,并且我想检索第三个参数3
,我该如何编写一个函数来为我做这件事?我想避免使用eval
。我的代码(如下)在调试行上运行良好,但由于某种原因返回 undefined
。
function unwrap(jsonp)
function unwrapper(param)
console.log(param[2]); // This works!
return param[2];
var f = new Function("jsonp", jsonp);
return f(unwrapper);
var j = 'jsonp([1,2,3]);'
console.log(unwrap(j)); // Return undefined
更多信息:我在 node.js 刮板中运行它,使用 request
库。
这是一个 jsfiddle https://jsfiddle.net/bortao/3nc967wd/
【问题讨论】:
回答为什么它返回 undefined ... 因为'jsonp([1,2,3]);'
应该是 'return jsonp([1,2,3]);'
- 如果您希望函数返回值,则需要从函数返回值
进一步了解@JaromandaX 所说的:var f = new Function("jsonp", "return " + jsonp);
要么或@nnnnnn 相同的结果:p 啊,是的,但我知道区别 - 好皮卡
当然@JaromandaX,但我认为j
变量代表刮板实用程序,因此将return
部分包含在unwrap()
中并与该字符串分开是有意义的。
是的,正如我所说,我现在明白即使最终结果相同,这也更有意义:p
【参考方案1】:
只要把slice
这个字符串去掉jsonp(
和);
,然后JSON.parse
就可以了:
function unwrap(jsonp)
return JSON.parse(jsonp.slice(6, jsonp.length - 2));
var j = 'jsonp([1,2,3]);'
console.log(unwrap(j)); // returns the whole array
console.log(unwrap(j)[2]); // returns the third item in the array
请注意,new Function
与 eval
一样糟糕。
【讨论】:
但 op 期待3
作为输出:p【参考方案2】:
只需稍作改动,就可以正常工作:
function unwrap(jsonp)
var f = new Function("jsonp", `return $jsonp`);
console.log(f.toString())
return f(unwrapper);
function unwrapper(param)
console.log(param[2]); // This works!
return param[2];
var j = 'jsonp([1,2,3]);'
console.log(unwrap(j)); // Return undefined
不返回你的匿名函数是这样的:
function anonymous(jsonp)
jsonp([1,2,3]);
因为这个函数没有返回,所以输出将是未定义的。
【讨论】:
以上是关于js javascript 将一段字符串转为JSON格式,字符串转换问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 for 循环将一段重复的 javascript 打印到 HTML 文档?