如何将文本解析为JSON对象?

时间:2015-02-04 20:12:23

标签: javascript json dojo

我有一个带有以下示例条目的dhcp租约文件:

  

lease 172.16.20.11 {    开始4 2014/10/09 18:33:57;    结束4 2014/10/09 18:43:57;    cltt 4 2014/10/09 18:33:57;    约束状态活跃;    下一个绑定状态免费;    倒带绑定状态自​​由;    硬件以太网XX:XX:XX:XX:XX:XX;    客户端主机名"电话&#34 ;;   }

我正在尝试找到一种将信息转换为JSON的方法,以便我可以在Dojo中使用。

我希望输出像

{"leases": ["address":"172.16.20.11", "starts":"2014/10/09 18:33:57", "ends":"2014/10/09 18:43:57","
client-hostname":"phone"]}

有办法做到这一点吗?

谢谢, 蒂姆T

1 个答案:

答案 0 :(得分:1)

var str = 'lease 172.16.20.11 { starts 4 2014/10/09 18:33:57; ends 4 2014/10/09 18:43:57; cltt 4 2014/10/09 18:33:57; binding state active; next binding state free; rewind binding state free; hardware ethernet XX:XX:XX:XX:XX:XX; client-hostname "phone"; }';

var res = str.split(/[\s;]+/); // regex match spaces and semicolons

// Create your leases array with a lease object from the parsed string
var leases = {leases:[{
address: res[1],
starts: res[5] + " " + res[6],
ends: res[9] + res[10],
client_hostname: res[30].split('"')[1]
}]};

var json = JSON.stringify(leases); //convert the array of leases to json string

[编辑]客户端主机名必须是client_hostname,因为名称限制变量

[EDIT]将租约更改为具有数组属性的对象,以更接近地匹配您想要的输出

[EDIT]从“phone”解析了client_hostname

的电话