如何 JSON 在 TypeScript 中序列化嵌套集合

How to JSON Serialize Nested Collections in TypeScript

我正在尝试使用 TypeScirp 将列表序列化为 Json,但我找不到处理复杂嵌套集合的方法。请大家多多指教。

下面是我尝试转换的示例结构。

    [
      {
        "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":[]}

尝试 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));

您也许应该了解如何操作 Arrays in JavaScript。 所以我猜你正在尝试的是让 body 填充。

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));