Из одного метода я получаю такую строку:
"{\n \"Name\": \"Next steps for pathway activities\",\n \"Options\": [\n {\n \"Name\": \"Show next steps\",\n \"ActionType\": \"PathSelector\",\n \"Key\": \"otoscopy\",\n \"Group\": \"pathway-activities\"\n },\n {\n \"Name\": \"Treatment cannot continue\",\n \"ActionType\": \"Navigation\",\n \"Key\": \"treatment\",\n \"Group\": \"pathway-activities\"\n },\n {\n \"Name\": \"Refer to GP\",\n \"ActionType\": \"PathSelector\",\n \"Key\": \"refer_to_gp\",\n \"Group\": \"treatment\"\n },\n {\n \"Name\": \"New Wax appointment\",\n \"ActionType\": \"PathSelector\",\n \"Key\": \"new_wax_appointment_otoscopy\",\n \"Group\": \"treatment\"\n },\n {\n \"Name\": \"Continue treatment\",\n \"ActionType\": \"Navigation\",\n \"Key\": \"pathway-activities\",\n \"Group\": \"treatment\"\n }\n ]\n}"
Как я могу разобрать его в нормальный формат? (P.S. В результате это не обязательно должна быть строка, это также может быть какой-то динамический объект)
Отвечает ли это на ваш вопрос? Как я могу разобрать JSON с помощью С#?
Что вы считаете "нормальным форматом"?





Таким образом, вы получите объект
let myStr = "{\n \"Name\": \"Next steps for pathway activities\",\n \"Options\": [\n {\n \"Name\": \"Show next steps\",\n \"ActionType\": \"PathSelector\",\n \"Key\": \"otoscopy\",\n \"Group\": \"pathway-activities\"\n },\n {\n \"Name\": \"Treatment cannot continue\",\n \"ActionType\": \"Navigation\",\n \"Key\": \"treatment\",\n \"Group\": \"pathway-activities\"\n },\n {\n \"Name\": \"Refer to GP\",\n \"ActionType\": \"PathSelector\",\n \"Key\": \"refer_to_gp\",\n \"Group\": \"treatment\"\n },\n {\n \"Name\": \"New Wax appointment\",\n \"ActionType\": \"PathSelector\",\n \"Key\": \"new_wax_appointment_otoscopy\",\n \"Group\": \"treatment\"\n },\n {\n \"Name\": \"Continue treatment\",\n \"ActionType\": \"Navigation\",\n \"Key\": \"pathway-activities\",\n \"Group\": \"treatment\"\n }\n ]\n}";
let myObj = JSON.parse(myStr);
console.info(myObj);
Вывод будет:
"Name": "Next steps for pathway activities",
"Options": [
{
"Name": "Show next steps",
"ActionType": "PathSelector",
"Key": "otoscopy",
"Group": "pathway-activities"
},
{
"Name": "Treatment cannot continue",
"ActionType": "Navigation",
"Key": "treatment",
"Group": "pathway-activities"
},
{
"Name": "Refer to GP",
"ActionType": "PathSelector",
"Key": "refer_to_gp",
"Group": "treatment"
},
{
"Name": "New Wax appointment",
"ActionType": "PathSelector",
"Key": "new_wax_appointment_otoscopy",
"Group": "treatment"
},
{
"Name": "Continue treatment",
"ActionType": "Navigation",
"Key": "pathway-activities",
"Group": "treatment"
}
]
}
Вы можете сделать так, возьмите строку json
var myStr = "{\n \"Name\": \"Next steps for pathway activities\",\n \"Options\": [\n {\n \"Name\": \"Show next steps\",\n \"ActionType\": \"PathSelector\",\n \"Key\": \"otoscopy\",\n \"Group\": \"pathway-activities\"\n },\n {\n \"Name\": \"Treatment cannot continue\",\n \"ActionType\": \"Navigation\",\n \"Key\": \"treatment\",\n \"Group\": \"pathway-activities\"\n },\n {\n \"Name\": \"Refer to GP\",\n \"ActionType\": \"PathSelector\",\n \"Key\": \"refer_to_gp\",\n \"Group\": \"treatment\"\n },\n {\n \"Name\": \"New Wax appointment\",\n \"ActionType\": \"PathSelector\",\n \"Key\": \"new_wax_appointment_otoscopy\",\n \"Group\": \"treatment\"\n },\n {\n \"Name\": \"Continue treatment\",\n \"ActionType\": \"Navigation\",\n \"Key\": \"pathway-activities\",\n \"Group\": \"treatment\"\n }\n ]\n}";
var _obj = JSON.parse(myStr);
console.info(_obj);
Вывод в образе
Если вы хотите иметь объект и выполнять операции над этим объектом в будущем, вы можете использовать пакет NuGet Newtonsoft.Json.
Просто создайте классы, которые отражают ваш json следующим образом:
class MyObject
{
public string Name { get; set; }
public IEnumerable<Option> Options { get; set; }
}
class Option
{
public string Name { get; set; }
public string ActionType { get; set; }
public string Key { get; set; }
public string Group { get; set; }
}
И попробуйте десериализовать этот json:
var obj = JsonConvert.DeserializeObject<MyObject>(jsonStr);
Это похоже на действительный JSON. Вы можете проверить пакет
Json.NET - Newtonsoftnuget.