Как 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));