Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式将Json拆分为键和数据_Javascript_Regex_Match - Fatal编程技术网

Javascript 使用正则表达式将Json拆分为键和数据

Javascript 使用正则表达式将Json拆分为键和数据,javascript,regex,match,Javascript,Regex,Match,我将使用正则表达式将下面的JSON对象拆分为其各自的键和值,并将这些值包装在HTMLP标记中 { "completeOrder": [ { "optionDescription": "Choose your size?", "optionTotal": 3, "dataMax": 0, "name": [ "wheat", " dough", " ric

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

{
"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>
...
]
...
]
}
{
完整顺序:[{
选项说明:
选择你的尺码

optionTotal: 三,

dataMax: 0

姓名:[ 小麦

... ] ... ] }
这个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])
    // }
}
let val=str.split(/[\r\n |\r |\n{|}}:|,| \[| \]/gi);
for(设i=0;i
我的代码去掉了字符(“{”、“[”、“]”、“}”、“:”),但我不知道它们去掉了什么。
如果有任何帮助,我们将不胜感激。

您可以递归地迭代JSON对象,只要在值周围放置一个段落标记(如果是文本)

功能f(obj)
{
用于(让我输入obj)
{
if(对象类型[i]=“对象”)
{
f(obj[i]);
}
其他的
{
obj[i]=''+obj[i]+'

'; } } } my_json={ “完成订单”:[ { “选项说明”:“选择您的尺码?”, “optionTotal”:3, “dataMax”:0, “姓名”:[ “小麦”, “面团”, “大米” ], “价格”:[ "34", "23", "45" ], “要求”:错误, “dataSingleproduct”:false, “内部选项”:[], “额外选择”:[ ] } ] } f(my_json);
console.log(JSON.stringify(my_JSON).replace(/\,/g,“\n”);
降级,为什么?仍然没有答案嗯。好吧,我想这里的人们已经厌倦了人们试图滥用Rexep。不管怎样,为什么不使用任意数量的JSON解析器(可能在这一点上内置)然后进入一个真实的数据结构,然后处理它?哈哈,这很有趣,从来没有想过会有对REGEX的滥用,所以请详细说明“json解析器(此时可能内置)是什么意思,然后进入一个真实的数据结构,然后处理它?”,这本书对我来说还是相当新鲜的。非常感谢,我做了我想做的,我完全忽略了使用javascript来做这件事的可能性。我相信,现在花了我一个多小时,剩下的就很简单了。我怎么把标签包在键周围,可能还有大括号和方括号,好吗?这有点复杂。但是t如果您只想在一个格式非常好的HTML输出中打印json对象,只需使用
document.body.innerHTML=''+json.stringify(json_obj,null,2)+'';
无需添加任何标记add all。谢谢,我最终用replace做了一些复杂的更改,感谢您的回答,它工作得非常好。