У меня проблемы с формированием json для вызова API. Мне нужно что-то вроде этого

{
    "token": "87dd8f93-27ad-493c-8ab1-e75c50b8fb71",
    "answers": [
        {
            "question": "Where are you from",
            "ans": "t"
        },
        {
            "question": "I am from tts",
            "ans": "f"
        }
    ]
}

У меня есть массив хешей с именами ответов, которые я сделал отдельно с чем-то вроде

string json = JsonConvert.SerializeObject(account, Formatting.Indented);

После этого я должен сделать с токеном, но затем, используя тот же процесс, который я получил

{
    "token": "87dd8f93-27ad-493c-8ab1-e75c50b8fb71",
    "answers": [
        "{\r\n
            \"question\": \"Where are you from\",
            \"ans\": \"t\"
        }",
        "{\r\n
            \"question\": \"I am from tts\",
            \"ans\": \"f\"
        }"
    ]
}

 public class Account
    {
       public string question { get; set; }
       public string ans { get; set; }           
    }

И после этого

if (ansNo.IsChecked == true)
                    {
                        Account account = new Account
                        {
                            question = quizText.Text,
                            ans = "f"
                        };
                        string json = JsonConvert.SerializeObject(account, Formatting.Indented);
                        Globals.answers[counter] = json;   
                    }
                    else
                    {
                        Account account = new Account
                        {
                            question = quizText.Text,
                            ans = "t"
                        };
                        string json = JsonConvert.SerializeObject(account, Formatting.Indented);
                        Globals.answers[counter] = json;
                    }

Нужна помощь, пожалуйста, спасибо

1
nOmi 28 Фев 2014 в 18:49
1
Если вы просто передаете его в вызов API, почему вас волнует, что он с отступом? Функция, которую вы вызываете, определенно не работает :)
 – 
Lynn Crumbling
28 Фев 2014 в 18:52
Потому что из-за "" "в фигурных скобках в ответе это неправильный json, и результат не возвращается
 – 
nOmi
28 Фев 2014 в 18:54
@ L.B это добавление кавычек на фигурные скобки в ответы.
 – 
nOmi
28 Фев 2014 в 18:55
Как заполнить account?
 – 
L.B
28 Фев 2014 в 18:56
При чем здесь формат с отступом?
 – 
Lynn Crumbling
28 Фев 2014 в 19:02

1 ответ

Лучший ответ

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

public class MyJson{
    public string token {get;set;}
    public List<Account> answers {get;set;}

    public MyJson(){
        answers = new List<Account>();
    }
}

Создайте новый объект MyJson и добавьте токен

MyJson o = new MyJson { token = "87dd8f93-27ad-493c-8ab1-e75c50b8fb71" }

Тогда как вы уже добавили ответы в список

Account account = new Account{
     question = quizText.Text,
     ans = "t"
};
o.answers.Add(account);

Затем сериализуйте все это и верните

return JsonConvert.SerializeObject(o, Formatting.Indented);
1
Adween 28 Фев 2014 в 19:18
Adwin благодарит за пример. Я пробовал. но возникла проблема. В список ответов ничего не попадает. Пусто ....
 – 
nOmi
28 Фев 2014 в 19:46
Объект аккаунта как хеши? не уверен, что вы имеете в виду ... Объект списка учетных записей должен быть заполнен в операторе if (ansNo.IsChecked == true) if, должен быть добавлен элемент, если этот оператор if достигнут.
 – 
Adween
28 Фев 2014 в 20:01
Между yap я пробовал это в условных операторах и с помощью хешей, я имею в виду, что у меня есть текст вопроса, например ("откуда вы") и ответ, например ("t" или "f"). я хочу, чтобы они были как хеши, такие как {"question": "where are you from", "ans": "t"}, и все хеши в одном массиве, а затем этот массив и токен являются одним родительским хешем.
 – 
nOmi
28 Фев 2014 в 20:05
Ах, хорошо, чтобы сделать их хэши, я бы использовал Dictionary<string, string> answers {get;set;} вместо списка аккаунтов. тогда да, они будут хешированы, но зачем вам их хеширование? на самом деле не имеет значения, когда они отправляются как json ...
 – 
Adween
28 Фев 2014 в 20:20
Хорошо, понял ваше мнение о хэшах, но это не добавление учетной записи в список ответов .... есть идеи?
 – 
nOmi
28 Фев 2014 в 20:40