类似于使用javascript(没有jquery)将文本解析为json
Parse text to json like using javascript (without jquery)
我有一个文本(纯文本),它的值向右对齐,字段名(键)向左对齐。Key和Values各有一个空格Maximum,以及分隔它们的任意数量的空格-最小2个空格。
我需要把它们放到树上,这样我就可以读取这些字段并提取值。我不知道如何继续并将此文本(下面的示例)解析为类似json的结构。
示例文本输入:
Item Name 1 value 1
Item Name 2 2
Third Item Long Name val 3
Fourth Item value 4
期望输出:
output = { 'ItemName1' : 'value 1',
'ItemName2' : '2',
'ThirdItemLongName' : 'val 3',
'FourthItem' : 'value 4' }
编辑:
我最终使用了@Gueras Arnaud的答案,并做了一些小的修改,因为显然我的数据右边有很多空格。
var source = document.getElementById('source').value;
var newsource = "{" + source.replace(/(.+?)(?:'t+|'s{2,})(.+?)'n/g, '"$1":"$2",').replace(/,$/, '') + '}';
var jsonobjtree = JSON.parse(newsource);
for (var key in jsonobjtree) {
if (jsonobjtree.hasOwnProperty(key)) {
jsonobjtree[key] = jsonobjtree[key].replace(/^'s+|'s+$/g, '')
}
}
最好的工具是regexp和替换的使用。在这个例子中,我尝试将每一行与以下模式匹配:
/(.+?)(?:'t+|'s{2,})(.+?)'n
并将结果插入如下:"key":"value",在我将{
和}
添加到字符串结果周围之后。为了获得一个对象,我使用JSON.parse()
var source = document.getElementById('source').value;
var newsource = "{" + source.replace(/(.+?)(?:'t+|'s{2,})(.+?)'n/g, '"$1":"$2",').replace(/,$/, '') + '}';
var obj = JSON.parse(newsource);
document.getElementById('source').value = newsource;
<textarea id="source" rows="10" cols="100">
Item Name 1 value 1
Item Name 2 2
Third Item Long Name val 3
Fourth Item value 4
</textarea>
相关文章:
- jQuery匹配JSON对象的部分文本
- 在文本区域POST后解码JSON
- 如何使用Windows8JSON.parse将JSON文本反序列化为日期类型
- 使用JSON文件中的变量(字符串)填充文本区域
- JSON解析字符串文本中的双引号
- 在node.js中使用JavaScript从JSON对象获取和设置文本内容
- 在freemarker中显示JSON文本
- 如何解析文本区域中的结构化字符串数据(接近JSON)以检索其所需的属性
- 为什么从JSON文本到类型的转换不包括函数
- 在文本区域格式化JSON
- 如何使用 JSON 解析正则表达式文本
- 车把.js在数据标记中嵌入文本 json 对象
- 使用 jQuery 将 HTML 文本抓取到 JSON 中,但由于循环引用而无法字符串化
- 替换json文件中文本中的值
- 如何在JavaScript中使用主节点文本对json对象进行排序
- 文本到JSON格式
- 正在读取多个JSON对象's文本作为每个jQuery语句
- 将文本框值传递给JS函数以转换为JSON
- 解析函数以字符串形式存储在对象文本/JSON语法中,并进行区分
- 解析文本.Json到jquery.animation