首页 > 解决方案 > 用于查询的 JSON 到 OData 字符串

问题描述

如何{ username: "john", password: "1234" }使用 typescript 将 JSON 对象转换为函数中的 OData 字符串查询?我找不到为我执行此操作的库(Angular 6)。这是我的尝试:

function ConvertToODataString (json: Object) {
    let ret_str: string = "";
    for (let key in json) {
        ret_str += (key + "=" + json[key] + "&");
    }
    if (ret_str) {
        ret_str = ret_str.substr(0, ret_str.length - 1);    // remove last &
    }
    return ret_str;
}

有人知道更好的方法吗?目前,我的 json 不是多层次的。

标签: jsonangulartypescriptserializationodata

解决方案


您可以使用for ... in枚举对象属性,将每个键/值对添加到数组中,并将值与Array.join 组合

function convertObjectToQuery(obj: Object): string {
  let values = new Array<string>();
  for (let prop in obj) {
    values.push(`${prop} eq '${obj[prop]}'`);
  }
  return encodeURI("$filter=" + values.join(" and "));
}

请参阅此 stackblitz以获取演示。


推荐阅读