【问题标题】:How to create and store json array of objects in C#如何在 C# 中创建和存储对象的 json 数组
【发布时间】:2016-09-01 17:49:32
【问题描述】:

我正在尝试测试 JSON 数据的 Newtonsoft 反序列化。我想创建一个 json 对象数组并反序列化它们。

例如

我的代码:

public class TestJson
{
    public string thing1
    {
        get;
        set;
    }

    public string thing2
    {
        get;
        set;
    }
}

var json = ??????

我尝试了什么

var json = [{thing1:"f",thing2="x"},{thing1:"c",thing2="bx"}];

//The above line is givig compiler error in C#

List <TestJson> exam = new List<TestJson>();
exam = JsonConvert.DeserializeObject<List<TestJson>>(json);

我的目标是创建 json aray pf 对象,然后将它们反序列化为类。我正在使用 Newtonsoft.Json 进行反序列化。

【问题讨论】:

  • 很可能你遇到了语法错误。语法错误信息说了什么?
  • @Sam,我可以反序列化上面的json数据吗?
  • 好吧,我以前从未遇到过Is i possible to deserialize the above json data? 语法错误,所以我不确定发生了什么。
  • ;预期是错误
  • 这通常意味着您忘记在上一行的末尾添加;。目前,我没有看到任何会导致该错误的代码。

标签: c# json json.net


【解决方案1】:

这里的问题似乎是 json 字符串:

var json = [{thing1:"f",thing2="x"},{thing1:"c",thing2="bx"}];

首先,DeserializeObject 方法需要一个字符串作为参数。 其次,JSON 要求键名用引号括起来。 第三,key/value 对的 JSON 语法是 key:value 而不是 key=value

因此正确的语法应该是:

var json = "[{ \"thing1\": \"f\",\"thing2\" : \"x\"},{ \"thing1\": \"c\",\"thing2\" : \"bx\"}]";

干杯!

【讨论】:

    【解决方案2】:

    在初始化对象后,您可以使用 Newtonsoft JSON 进行序列化和反序列化。一个简单的例子是:

    TestJson[] testArr = new TestJson[] { new TestJson() { thing1 = "a1", thing2 = "a2" },
                                          new TestJson() { thing1 = "b1", thing2 = "b2" }
                                        };
    string json = JsonConvert.SerializeObject(testArr);
    //Serialized string is: [{"thing1":"a1","thing2":"a2"},{"thing1":"b1","thing2":"b2"}]
    TestJson[] newObject = JsonConvert.DeserializeObject<TestJson[]>(json);
    

    【讨论】:

      【解决方案3】:

      我认为你应该尝试使用这种语法:

      string json = @"[{'thing1':'a1', 'thing2':'a2'}, {'thing1':'b1', 'thing2':'b2'}, {'thing1':'c1', 'thing2':'c2'}]";
      

      我认为这样写很容易,对于设置值,你应该使用':',而不是像 at (thing2="x") 那样的'='

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-22
        • 1970-01-01
        • 1970-01-01
        • 2013-09-22
        相关资源
        最近更新 更多