从对象处理空的Json数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从对象处理空的Json数组相关的知识,希望对你有一定的参考价值。

我有一个json对象返回两个空数组“subQuestions”:[]和“answers”:[]

我已经为对象创建了类,但是我无法让它工作,这是我到目前为止所做的。

宾语

   "questions": [
        {
            "questionId": "1",
            "question": "Ipsum",
            "helpText": null,
            "questionType": "MultipleChoice",
            "answerChoices": [
                {
                    "answerChoiceId": "b2b-2.01-answer1",
                    "value": "Lorem",
                    "subQuestions": []
                }
            ],
            "answers": []
        }

    public class AnswerChoice
    {
    public string answerChoiceId { get; set; }
    public string value { get; set; }
    public List<object> subQuestions { get; set; }
}

public class Question
    {
    public string questionId { get; set; }
    public string question { get; set; }
    public object helpText { get; set; }
    public string questionType { get; set; }
    public List<AnswerChoice> answerChoices { get; set; }
    public List<object> answers { get; set; }
}

public class ObjectRoot
    {
    public string productId { get; set; }
    public List<Question> questions { get; set; }
}




var jsonBody = new ObjectRoot()
     {
      productId = productId,
      questions = new[]
       {
        new Question() {
        questionId = "b2b-2.01",
        question ="Vad är syftet med ert engagemang hos oss?",
        helpText = null,
        questionType = "MultiChoise",
        answerChoices = new []{
        new AnswerChoice{
        answerChoiceId = "",
        value = "",
        **HERE is what it gets tricky for me**
        }
       }
      }
     }
   };

对我来说棘手的部分是在value =“”之后,并且需要添加subQuestion对象,尝试了多种方法但没有运气。

答案

在您的类中,所有集合都是List而不是数组。所以要使它工作,你需要调用ToList扩展方法。对于空集合,只需调用List构造函数

var jsonBody = new ObjectRoot()
{
    productId = "productId",
    questions = new[]
    {
        new Question() {
            questionId = "b2b-2.01",
            question ="Vad är syftet med ert engagemang hos oss?",
            helpText = null,
            questionType = "MultiChoise",
            answerChoices = new []{
                new AnswerChoice{
                    answerChoiceId = "",
                    value = "",
                    subQuestions = new List<object>() // empty collection                        
                }
            }.ToList(),
            answers = new List<object>()
        }
    }.ToList()
};

以上是关于从对象处理空的Json数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中使用 tidyjson 处理嵌套的空 JSON 数组

Elasticsearch-PHP 处理JSON数组和对象

Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”

如何从片段中的 JSON 响应中的对象获取数据

解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

NSDebugDescription = "JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。";