Javascript 如何将以下Json对象转换为字符串,如下所示
我有一个json对象,如下所示Javascript 如何将以下Json对象转换为字符串,如下所示,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个json对象,如下所示 { "category": "music", "location": { "city": "Braga" }, "date": { "start": { "$gte": "2017-05-01T18:30:00.000Z" }, "end": { "$lt": "2017-05-12T18:30:00.000Z" } } } category=music | location.c
{
"category": "music",
"location": {
"city": "Braga"
},
"date": {
"start": {
"$gte": "2017-05-01T18:30:00.000Z"
},
"end": {
"$lt": "2017-05-12T18:30:00.000Z"
}
}
}
category=music | location.city = Braga | date.start.$gte = 2017-05-01T18:30:00.000Z | date.end.$lt = 2017-05-12T18:30:00.000Z
我需要创建一个查询字符串,如下所示
{
"category": "music",
"location": {
"city": "Braga"
},
"date": {
"start": {
"$gte": "2017-05-01T18:30:00.000Z"
},
"end": {
"$lt": "2017-05-12T18:30:00.000Z"
}
}
}
category=music | location.city = Braga | date.start.$gte = 2017-05-01T18:30:00.000Z | date.end.$lt = 2017-05-12T18:30:00.000Z
我怎样才能做到这一点
这就是我尝试过的
_.each(this.filter, (val: string, key: string) => {
if (key && val) {
filterArray.push(`${key}=${val}`);
}
});
您可以迭代键并构建值的路径。稍后连接路径并添加值并连接到最终字符串
函数getParts(对象){
功能iter(o,p){
Object.keys(o).forEach(函数(k){
if(o[k]&&typeof o[k]=“object”){
iter(o[k],p.concat(k));
返回;
}
结果.push(p.concat(k).join('.')+'='+o[k]);
});
}
var结果=[];
国际热核实验堆(对象,[]);
返回结果。join(“|”);
}
var object={“category”:“music”,“location”:{“city”:“Braga”},“date”:{“start”:{“$gte”:“2017-05-01T18:30:00.000Z”},“end”:{“$lt”:“2017-05-12T18:30:00.000Z”},
string=getParts(对象);
console.log(字符串)代码>对不起,我迟到了,但还是。
方法walk
递归地运行JSON,并使用键链
和值
作为参数调用回调函数。
然后convert
使用walk
将JSON转换为您的格式:
var walk = function( data, iterator, stack ) {
var key;
stack = stack || [];
for ( key in data ) {
if ( typeof data[ key ] === 'string' ) {
iterator( stack.concat( [ key ] ), data[ key ] );
} else {
walk( data[ key ], iterator, stack.concat( [ key ] ) );
}
}
};
var convert = function( data ) {
var result = [];
walk( data, function( keys, value ) {
result.push( keys.join( '.' ) + ' = ' + value );
} );
return result.join( ' | ' );
};
var query_string = convert( /* your JSON here */ );
这不是一个查询字符串OK只是一个字符串@NitzanTomer如何转换?创建查询字符串(或您想要获得的对象类型),从JSON对象分配值。你至少试过对它进行编码吗?是的,我试过像这样u2;.each(this.filter,(val:string,key:string)=>{if(key&&val){filterary.push(${key}=${val}
);});如何将其转换为支持typescript抱歉,我无法帮助您使用typescript。