簡體   English   中英

序列化和反序列化JSON.NET C#中的單值?

[英]Serialize and deserialize singles values in JSON.NET C#?

我使用VS 2012,.NET 3.5,JSON.NET。
我有幾個單一值,例如int,字符串類型。
我用~ separator設置字符串值。 我序列化字符串,將其保存在文件中。
然后,我反序列化文件中的字符串,然后拆分字符串。

我想避免使用~ character拆分,並且我想避免創建新類型(具有屬性get; set的類實體)。

我認為使用匿名類型或動態類型很復雜。

有什么建議么?

單元測試現在可以工作:

    var value1 = "C20100101_0001";
    var value2 = 678901;
    var value3 = "lorem ipsum text %&/() more test";
    var value4 = "email@gmail.com";
    string json = "{0}~{1}~{2}~{3}".FormatString(value1, value2, value3, value4);
    var ser = JsonConvert.SerializeObject(json);
    ser = JsonConvert.SerializeObject(json, Formatting.Indented);
    System.IO.File.WriteAllText(@".\path.txt", ser);

    var deser = System.IO.File.ReadAllText(@".\path.txt");
    var json2 = JsonConvert.DeserializeObject<string>(deser);
    Assert.AreEqual(json, json2);

    var data = json2.Split(new char[] { '~' });
    Assert.IsNotNull(data);
    Assert.AreNotEqual(0, data.Length);
    Assert.AreEqual(value1, data[0]);

據我了解,您可以將所有內容轉儲到數組中並進行序列化:

var list = new object[]{"C20100101_0001", 678901, "lorem ipsum text %&/() more test", "email@gmail.com"};

var json = JsonConvert.SerializeObject(list);

var deserialized = JsonConvert.DeserializeObject<object[]>(json);

使用@EagleEak回答https://stackoverflow.com/a/28325833/206730 ,這是單元測試工作中的一種解決方案:

        var value1 = "C20100101_0001";
        var value2 = 678901;
        var value3 = "lorem ipsum text %&/() more test";
        var value4 = "email@gmail.com";
        var list = new object[] { value1, value2, value3, value4 };
        ser = JsonConvert.SerializeObject(list, Formatting.Indented);
        System.IO.File.WriteAllText(@".\path.txt", ser);

        deser = System.IO.File.ReadAllText(@".\path.txt");
        var deserialized = JsonConvert.DeserializeObject<object[]>(deser);
        Assert.IsNotNull(deserialized);
        Assert.AreNotEqual(0, deserialized.Length);
        Assert.AreEqual(value1, deserialized[0]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM