如何在Javascript中将任意json中的所有值(仅值)连接到单个字符串中

如何在Javascript中将任意json中的所有值(仅值)连接到单个字符串中,javascript,json,Javascript,Json,在javascript中,给定任意json字符串作为输入,我想创建一个字符串,其中只包含由输入字符串表示的json中的值的串联。例如: json = '{ "x": "some text", "y" : [3, "more text", {"z": 7}]}'; concatFunc(json) // should return "some text3more text7" 我希望有一些我不知道的Javascript特性或函数可以让我轻松地做到这一点——或者在json字符串本身上,或者通过执行

在javascript中,给定任意json字符串作为输入,我想创建一个字符串,其中只包含由输入字符串表示的json中的值的串联。例如:

json = '{ "x": "some text", "y" : [3, "more text", {"z": 7}]}';
concatFunc(json) // should return "some text3more text7"
我希望有一些我不知道的Javascript特性或函数可以让我轻松地做到这一点——或者在json字符串本身上,或者通过执行json.parse()然后以某种方式“扁平化”Javascript数据结构?

参考了关于json.parse()的,我注意到了reviver回调参数,该参数会为正在分析的每个值调用!可用于构建字符串的:

函数concatFunc(json){
让txt=“”;
parse(JSON,(key,val)=>{
if(val的类型!=“对象”)
txt=txt+val.toString();
});
返回txt;
}
exampleJSON='{“x”:“一些文本”,“y”:[3,“更多文本”,{“z”:7}]}';
log(concatFunc(exampleJSON));

以下代码生成指定的输出:

let jsonString = '{ "x": "some text", "y" : [3, "more text", {"z": 7}]}';
let object = JSON.parse(jsonString);

var primitivs = ["string", "number", "boolean", "undefined"]; // modify as needed
var resultStr = "";

var concatObjVal = function (obj) {

    for (let key of Object.keys(obj)) {

        let val = obj[key];
        let type = typeof val;

        if (primitivs.indexOf(type) != -1) {
            resultStr = resultStr + val;
        }
        else {
            concatObjVal(val);
        }
    }    
}

concatObjVal(object);

console.log("Result: " + resultStr);

您的
json
变量是字符串,而不是json。您的问题是关于使用json值的。这仍然是你想要的答案吗?@jmargolisvt是的:-)你怎么能在同一分钟问和回答一个问题?自我回答是特别允许的,所以。@Quirimo在发帖前研究了更多之后,我想出了一个解决方案,因此我回答了。当问一个问题时,页面底部有一个勾选框,上面写着“回答你自己的问题”。事实上,“不仅可以问和回答你自己的问题,还明确鼓励你这样做”。有关更多详细信息,请参阅,您的
json
变量是字符串,而不是json。@jmargolisvt谢谢,我已经对问题主体进行了更精确的编辑