Angular - Как я могу заменить весь символ во всем JSON? - PullRequest
0 голосов
/ 12 октября 2018

Я только что нашел способ пропустить амперсанд через свой URL, но на данный момент я могу заменить только мой первый символ.

Мой json такой:

{
  "post_ID": 0,
  "post_date": "2018-10-12",
  "post_content": "Post content test",
  "post_image": "example.png",
  "article_tittle": "Article tittle test",
  "article_content": "<p>first &amp;</p><p>second &amp;</p>",
  "post_category": "INF"
}

Иэто мой код в угловых

addPost(post: Post) {
  let json = JSON.stringify(post);
  let params = 'json=' + json.replace('&', '%26');
  //let params = 'json='+json;
  let headers = new Headers({
    'Content-Type': 'application/x-www-form-urlencoded'
  });

  return this._http.post(this.url + 'posts', params, {
      headers: headers
    })
    .pipe(map((res: Response) => res.json()));
}

The ('&', '% 26');заменит мой первый &, но не второй &, я должен создать второй массив для обработки всего текста?

Ответы [ 2 ]

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

Вы можете использовать регулярное выражение, подобное этому

let params = 'json='+json.replace(new RegExp('&', 'g'), '%26');
0 голосов
/ 12 октября 2018

Я думаю, что вы можете сделать это, просто используя encodeURI, чтобы создать queryParams и decodeURI, чтобы вернуть исходный объект.

const queryParams = {
  "post_ID": 0,
  "post_date": "2018-10-12",
  "post_content": "Post content test",
  "post_image": "example.png",
  "article_tittle": "Article tittle test",
  "article_content": "<p>first &amp;</p><p>second &amp;</p>",
  "post_category": "INF"
};

const encoded = encodeURI(JSON.stringify(queryParams));
...
const decodedObject = JSON.parse(decodeURI(encoded));

...

addPost(post: Post) {

  const params = `json=${encodeURI(JSON.stringify(post))}`;

  let headers = new Headers({
    'Content-Type': 'application/x-www-form-urlencoded'
  });

  return this._http.post(this.url + 'posts', params, {
      headers: headers
    })
    .pipe(map((res: Response) => res.json()));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...