Я хочу смоделировать следующую информацию в json
, но не могу этого сделать.
Сервер отправляет результат операции клиенту, используя следующую модель
class Result (result:string, additional-info:string)
additional-info
может содержать json
или string
в зависимости от варианта использования. Таким образом, его тип String
. Когда мне нужно отправить в него json
, я просто отправляю строку с допустимым синтаксисом json
и полагаю, что клиент Angular
сможет преобразовать строку в json
с помощью JSON.parse
.
json
, который я хочу отправить клиенту, выглядит как
{
"result": "success",
"additional-info": {
"list ": [{
"tag": "sometag",
"description": "some description"
}]
}
}
Я проверил на jsonlint (https://jsonlint.com/), что структура правильная.
На стороне клиента (Angular
) я передаю сообщение следующим образом:
getQuestions(some args){
console.log('response from server:',res)
console.log('response body',res.body)
let jsonResponse:ServerResponseAPI = res.body //should contain result and additional info
console.log("result: "+jsonResponse.result+", additional info:"+jsonResponse.additionalInformation)
let jsonList:string = jsonResponse.additionalInformation
console.log("jsonQuestionList: "+jsonList)
let information:Information = JSON.parse(jsonList)
console.log("information:"+information)
});
}
ServerResponseAPI
определяется как
export class ServerResponseAPI{
constructor ( public result:string,
public additionalInformation:string){}
}
Когда я выполняю код, я вижу следующие отпечатки на консоли браузера, но вижу, что ошибка additional-info
не определена.
response body {result: "success", additional-info: "{"list ": [{"tag": "sometag", "description": "some description"}]}"}
list-management.service.ts:46 result: success, additional info:undefined
Я вижу, что тело содержит result
и additional-info
, но после преобразования тела в ServerResponseAPI
я вижу, что result
равно success
, но additional-info
не определено.