【问题标题】:Split Json into Key and data by using regex使用正则表达式将 Json 拆分为 Key 和 data
【发布时间】:2019-11-22 21:07:44
【问题描述】:

我想使用正则表达式将下面的 JSON 对象拆分为其各自的键和值,并将值包装在 html p 标记中。

{
"completeOrder": [
    {
        "optionDescription": "Choose your size?",
        "optionTotal": 3,
        "dataMax": 0,
        "name": [
            "wheat",
            " dough",
            " rice"
        ],
        "price": [
            "34",
            "23",
            "45"
        ],
        "require": false,
        "dataSingleproduct": false,
        "innerOptions": [],
        "extraOptions": [
         ...
         ]
    }
   ]
}

我想要的返回字符串如下所示:

{
 completeOrder: [{
optionDescription: 
<p>Choose your size</p>
optionTotal: 
<p>3</p>
dataMax: 
<p>0</p>
name: [
<p>Wheat</p>
...
]
...
]
}

这个 JSON 对象保存在一个文件中,通过 node.js 的“fs.read”功能接收。 我收到 str 变量中的对象,目前这是我目前拥有的代码,它给了我接近我想要的东西,但它缺少我需要的形式。

let val= str.split(/[\r\n|\r|\n|{|}|:|,|\[|\]]/gi);
for (let i = 0; i < val.length; i++) {
    // if(sentences[i] !== ""){
        console.log(val[i])
    // }
}

我的代码去掉了字符(“{”、“[”、“]”、“}”、“:”),但我没有去掉它们。 任何帮助将不胜感激

【问题讨论】:

  • 降级,为什么?,仍然没有答案嗯。好的
  • 我认为这里的人们已经厌倦了试图滥用 REXEP 的人。无论如何,你为什么不直接使用任意数量的 json 解析器(此时可能已内置)并进入一个真实的数据结构,然后对其进行处理?
  • 大声笑,这很有趣,从来没有想过有滥用 REGEX 的东西,所以请详细说明你的意思 "json 解析器(可能在此时内置)并进入真正的数据结构,然后处理它?”,这个领域对我来说还是相当新的。

标签: javascript regex match


【解决方案1】:

您可以递归地遍历您的 JSON 对象,如果它是文字,则只需在您的值周围放置一个段落标签。

function f (obj)
{
	for (let i in obj)
	{
		if (typeof obj[i] == "object")
		{
			f (obj[i]);
		}
		else
		{
			obj[i] = '<p>' + obj[i] + '</p>';
		}
	}
}

my_json = {
"completeOrder": [
    {
        "optionDescription": "Choose your size?",
        "optionTotal": 3,
        "dataMax": 0,
        "name": [
            "wheat",
            " dough",
            " rice"
        ],
        "price": [
            "34",
            "23",
            "45"
        ],
        "require": false,
        "dataSingleproduct": false,
        "innerOptions": [],
        "extraOptions": [
         ]
    }
   ]
}

f (my_json);
console.log ( JSON.stringify (my_json).replace (/\,/g, "\n" ) );

【讨论】:

  • 非常感谢,正是我想要的,我完全忽略了使用 javascript 来做到这一点的可能性。
  • 我相信它现在花了我一个多小时,其余的会很容易,我如何将标签包裹在钥匙周围,可能还有花括号和方括号,任何想法。
  • 这有点复杂。但是如果你只是想在一个漂亮的格式的 HTML 输出中打印一个 json 对象,只需使用document.body.innerHTML = '&lt;pre&gt;' + JSON.stringify (json_obj, null, 2) + '&lt;/pre&gt;'; 不需要添加任何标签添加所有。
  • 谢谢我最终用替换做了一些复杂的改变,感谢你的回答,它完美地工作了。
猜你喜欢
  • 1970-01-01
  • 2020-08-25
  • 2020-01-14
  • 1970-01-01
  • 2020-12-31
  • 2017-09-12
  • 2018-04-06
  • 2012-01-18
  • 1970-01-01
相关资源
最近更新 更多