2015-02-04 1 views
0

Я использую VS 2012, .NET 3.5, JSON.NET.
У меня есть несколько значений, которые любят int, типы строк.
Я установил строковое значение с ~ separator. Я сериализую строку, сохраняю ее в файле.
Затем я десериализую строку из файла и разделил строку.Сериализация и десериализация значений синглов в JSON.NET C#?

Я хочу, чтобы избежать разделения на ~ character, и я хочу, чтобы избежать создания нового типа (объект класса с свойствами get; установить).

Я думаю, что использование анонимных типов или динамическое сложное.

Любые предложения?

тест Блок работает в настоящее время:

var value1 = "C20100101_0001"; 
    var value2 = 678901; 
    var value3 = "lorem ipsum text %&/() more test"; 
    var value4 = "[email protected]"; 
    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]); 

ответ

2

Насколько я понимаю, вы могли бы просто сбросить все в массиве и сериализации, что:

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

var json = JsonConvert.SerializeObject(list); 

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

С @EagleEak ответ https://stackoverflow.com/a/28325833/206730, решение в единичные испытания:

 var value1 = "C20100101_0001"; 
     var value2 = 678901; 
     var value3 = "lorem ipsum text %&/() more test"; 
     var value4 = "[email protected]"; 
     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]); 
Смежные вопросы