Строка JSON в OData для запроса - PullRequest
0 голосов
/ 18 октября 2018

Как я могу превратить объект JSON, т. Е. { username: "john", password: "1234" }, в строковый запрос 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 не является многоуровневым.

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Вы можете использовать для ... в для перечисления свойств объекта, добавления каждой пары ключ / значение в массив и объединения значений с 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 "));
}

См. этот стек для демонстрации.

0 голосов
/ 19 октября 2018

Я решил вместо этого использовать модуль HttpParms :

import { HttpParams } from "@angular/common/http";

const params = new HttpParams()
    .set("$filter", "Username eq '" + parameters["Username"] + "' and Password eq '" + parameters["Password"] + "'")
    .set("$count", "true");

console.log(params.toString());
0 голосов
/ 18 октября 2018

JSON.parse function.

Пример:

var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');


json={ "name":"John", "age":30, "city":"New York"};
var obj = JSON.parse(json+'');
...