Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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_Angular_Typescript - Fatal编程技术网

Javascript 如何将以下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

我有一个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.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。