JavaScript将字符串解析为对象
JavaScript parsing a string to object
我正在处理一个解析部分,将字符串值解析为对象的字符串。
我想一种方法是多次调用substr()
,但如果有什么方法可以更清楚地做到这一点
例如,当我输入字符串时
USER='Howe', TEXT='foo'
或
USER='HOWE' TEXT='foo'
或
USER='HOWE',TEXT='foo'
在函数之后,一个对象将是这样的:
{USER:'HOWE, TEXT='foo'};
根据我以前的回答重新编写。
function toObj(str) {
const a = str.split(/[,'s]+/);
return a.reduce((p, c) => {
const kv = c.replace(/'/g, '').split('=');
p[kv[0]] = kv[1];
return p;
}, {});
}
toObj("USER='Howe', TEXT='foo'"); // { USER: "Howe", TEXT: "foo" }
toObj("USER='Howe',TEXT='foo'"); // { USER: "Howe", TEXT: "foo" }
toObj("USER='Howe' TEXT='foo'"); // { USER: "Howe", TEXT: "foo" }
演示
这不是JSON的有效对象语法。你可以这样做:
var text = '{ "USER":"Howe", "TEXT":"foo" }';
var obj = JSON.parse(text);
console.log(text, obj);
然后您可以简单地通过obj.USER
和obj.TEXT
引用属性。
编辑:经过讨论
如果你想让用户能够在两个字段上搜索,我建议你做如下操作(当然,你可以将其扩展到你想要的任意多个字段)。
<script>
function search() {
var userValue = document.getElementById('txtUser').value;
var textValue = document.getElementById('txtText').value;
var jsonText = '{ "USER":"' + userValue + '", "TEXT":"' + textValue + '" }';
console.log(jsonText);
var json = JSON.parse(jsonText);
console.log(json);
// Do whatever you wish with your created object here...
}
</script>
<input id="txtUser" value="foo" type="text">
<input id="txtText" value="bar" type="text">
<button onclick="search();">Submit</button>
您可以使用正则表达式来解析输入字符串中的键和值:
function convert(s) {
var m = s.match(/USER='(.*)'.*TEXT='(.*)'/);
return {
USER: m[1],
TEXT: m[2]
}
}
console.log(convert("USER='HOWE' TEXT='foo'"));
match表达式使用分组(将"matches"括在括号中)来捕获值,然后这些值最终会出现在m
数组中。
convert
函数将返回一个JavaScript对象。如果您希望将其转换为JSON字符串,请使用JSON.parse.
JSBin:https://jsbin.com/fefufehibo/edit?js,控制台
如果您真的只想将这两个值拆分为一个数组,您可以执行以下操作:
str.split(',');
但实际上听起来你想把它改成一个有键、值对的对象,而不是一个数组。
你能更具体一点吗?您想要解析的确切字符串是什么?
相关文章:
- 如何使用jquery读取对象字符串
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- Javascript对象字符串值-在应该隐藏的时候呈现的HTML代码
- 在Nodejs中将数组转换为类似子的对象字符串
- 对象字符串转换为JSON(抛出错误)
- 如何将事件对象字符串化
- 如何在 JavaScript 中将 JSON 对象字符串化为负零
- 将 JSON 对象字符串数组转换为 JS 对象数组
- 如何在角度转换请求中将对象字符串转换为 JSON 对象
- 删除开头的双引号&结束于JSON对象/字符串或Java脚本变量
- 将json对象字符串转换为值
- 如何迭代json对象字符串
- 将数组列表转换为json对象字符串
- 如何将继承的对象字符串化为JSON
- 如何按对象字符串值之一对对象数组进行数字排序
- 解析日期对象字符串并获取以毫秒为单位的时间
- 如何在javascript中解析javascript对象字符串
- Javascript类对象字符串到对象
- 从使用.data()添加的对象字符串中获取值
- 如何在javascript中添加一个函数变量到对象字符串