将字符串转换或解析为JSON对象

巴斯基

我和我的朋友有一个面试问题(Javascript)很长时间无法解决,因此想到在这里提问,

Question:
String:
2014<18.3,11.4,12.1,19.5,1000&&11.2,34.5,67.1,18,20000>name=sample,position=engineer,company=abc

并且最终结果应为具有以下格式的JSON对象。任何人都可以帮助解决这个问题。

Output:
{[
    {"Proposal":"2014"}, 
    {"values":"[18.3,11.4,12.1,19.5],[11.2,34.5,67.1,18]"},
    {"Items":"[1000,20000]"},
    {"name":"sample"},
    {"position":"engineer"},
    {"company":"abc"},
]}

请期待解决方案和解释。

谢谢,巴斯基

拉什敏·贾维娅(Rashmin Javiya)

这是您的解决方案。

  1. 输入字符串应具有所有参数,如果缺少任何参数,下面的代码将中断。
  2. 逻辑是动态的,可以支持任意数量的数值,其中最后一位将被视为项。
  3. 逻辑还支持输入字符串中的n个键/值对。

在控制台中检查以下代码。

var JsonOutput = [];
var sRawInput = "2014<18.3,11.4,12.1,19.5,1000&&11.2,34.5,67.1,18,20000>name=sample,position=engineer,company=abc";

JsonOutput.push({ "Proposal" : sRawInput.split("<")[0] });

var oValues = sRawInput.split("<")[1].split(">")[0].split("&&");
var oActualValues = [];
var oActualItems = [];

$(oValues).each(function(Ind, Val){
    oActualValues.push(Val.split(",").slice(0, Val.split(",").length - 1).join());
    oActualItems.push(Val.split(",")[Val.split(",").length - 1]);
});

JsonOutput.push({ "Values" : oActualValues });
JsonOutput.push({ "Items" : oActualItems });

var OtherValues = sRawInput.split(">")[1].split(",");

$(OtherValues).each(function(Ind, Val){
    JsonOutput.push(JSON.parse("{\"" + Val.split("=")[0] + "\":\"" + Val.split("=")[1] + "\"}"));
});

console.log(JsonOutput);
console.log(JSON.stringify(JsonOutput));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章