Как JSON сериализовать вложенные коллекции в TypeScript

Я пытаюсь сериализовать список в Json, используя TypeScirp, но я не смог найти способ обрабатывать сложные вложенные коллекции. Пожалуйста, будьте любезны, чтобы показать немного света.

Ниже приведен пример структуры, которую я пытаюсь преобразовать.

    [
      {
        "method": "PATCH",
        "uri": "/ScrumStarain/_apis/wit/workItems/$Product Backlog Item?api-version=1.0",
        "headers": {
          "Content-Type": "application/json-patch+json"
        },
        "body": [
          {
            "op": "add",
            "path": "/fields/System.Title",
            "value": "apip1"
          },
          {
            "op": "add",
            "path": "/id",
            "value": "-1"
          }
        ]
      },
      {
        "method": "PATCH",
        "uri": "/ScrumStarain/_apis/wit/workItems/$Task?api-version=1.0",
        "headers": {
          "Content-Type": "application/json-patch+json"
        },
        "body": [
          {
            "op": "add",
            "path": "/fields/System.Title",
            "value": "apip2"
          },
          {
            "op": "add",
            "path": "/id",
            "value": "-2"
          }

        ]
      }

]

ниже приведен пример того, что я пытался сделать, я пытаюсь сгенерировать его динамически. Мне не удалось добавить тело и подчиненные теги.

var state =" xy" ;
var tagsCollection =["a","b"];


    var tempBody : any =[];
            tempBody.op = "add";
            tempBody.path = "/fields/System.State";
            tempBody.value = state;

    var jsonMainString:any = {};
            jsonMainString.method = "PATCH";
            jsonMainString.uri="/_apis/wit/workItems/123?api-version=1.0";
            jsonMainString.headers  = { "Content-Type" :"application/json-patch+json"};
            jsonMainString.body = tempBody;


        console.log(JSON.stringify(jsonMainString));

и конечный результат выглядит как ниже, что не правильно

{"method":"PATCH","uri":"/_apis/wit/workItems/123?api-version=1.0","headers":{"Content-Type":"application/json-patch+json"},"body":[]}

2 ответа

Решение

Возможно, вам стоит посмотреть, как манипулировать массивами в JavaScript. Я думаю, что вы пытаетесь заселить тело.

var state =" xy" ;
var tagsCollection =["a","b"];


var tempBody =[];
tempBody.push({
  op: "add",
  path: "/fields/System.State",
  value: state
});


var jsonMainString = {};
jsonMainString.method = "PATCH";
jsonMainString.uri="/_apis/wit/workItems/123?api-version=1.0";
jsonMainString.headers  = { "Content-Type" :"application/json-patch+json"};
jsonMainString.body = tempBody;


console.log(JSON.stringify(jsonMainString));

Пытаться JSON.stringify(object) будет вам помочь & изменить код на var tempBody : any ={};

var data= [
      {
        "method": "PATCH",
        "uri": "/ScrumStarain/_apis/wit/workItems/$Product Backlog Item?api-version=1.0",
        "headers": {
          "Content-Type": "application/json-patch+json"
        },
        "body": [
          {
            "op": "add",
            "path": "/fields/System.Title",
            "value": "apip1"
          },
          {
            "op": "add",
            "path": "/id",
            "value": "-1"
          }
        ]
      },
      {
        "method": "PATCH",
        "uri": "/ScrumStarain/_apis/wit/workItems/$Task?api-version=1.0",
        "headers": {
          "Content-Type": "application/json-patch+json"
        },
        "body": [
          {
            "op": "add",
            "path": "/fields/System.Title",
            "value": "apip2"
          },
          {
            "op": "add",
            "path": "/id",
            "value": "-2"
          }

        ]
      }

];
console.log(JSON.stringify(data));

Другие вопросы по тегам