【问题标题】:Parsing string into dictionary将字符串解析为字典
【发布时间】:2014-12-23 14:14:26
【问题描述】:

我想以一种优雅的方式转换这种字符串:

"{lastname=Oba, firstname=Bar}"

var person = [];
person["firstName"] = "Bar";
person["lastName"] = "Oba";

我尝试使用 JSON 解析但不工作, 如果没有脏分裂,我不知道该怎么做

【问题讨论】:

  • 不是JSON,因此 JSON.parse 不起作用
  • 顶部项目只是一个字符串,它不是 JSON,因此 JSON.parse 不起作用
  • 好吧,它不是 JSON,但它有一个简单的解析器吗?
  • 您需要对其进行拆分和/或使用正则表达式对其进行解析。您需要编写解析器,或者让任何吐出的代码生成正确的 JSON 来启动!
  • split()有意见?

标签: javascript arrays json parsing


【解决方案1】:

算法:
,分割字符串,你会得到一个A=B对的列表,然后用=分割每对列表并形成字典:

Python

s = "{lastname=Oba, firstname=Bar}"

l = s[1:-1].split(",")
d = {}
for e in l:
    a = e.split("=")
    d[a[0].strip()] = a[1].strip()

 

JavaScript

var s = "{lastname=Oba, firstname=Bar}";

var l = s.slice(1,-1).split(',');
var d = {};
for (var i in l) {
    var a = l[i].split('=');
    d[a[0].trim()] = a[1].trim();
}

【讨论】:

    【解决方案2】:

    这段代码应该很容易解析。

    function myParser(str) {
        return str.slice(1, -1).split(',').map(function(el) {
            return el.trim()
        }).map(function(el) {
            return el.split('=')
        }).reduce(function(result, pair) {
            result[pair[0].trim()] = pair[1].trim();
            return result
        }, {});
    }
    

    它只对一小部分属性和数据按预期工作,但找出这些情况并修复该行为留给读者练习。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多