настраиваемая сериализация / десериализация с использованием JSON .net - PullRequest
0 голосов
/ 13 февраля 2011

Мое приложение получает SMS в следующем формате:

STA: 000000,000; L: 310; TM: 090516195102; D: 1; T: 01; C: 25; A00: 0,166; A01: 00000; A02: 0,578; A03: 00 000; A04: 00000; A05: 00000; A06: 00000; A07: 00000; A08: 00000; A09: 00000; A10: 00000; A11: 00000; A1 2: 00000; A13: 31.00; A14: 30,93; P01: 00000000; P02: 00000000; P03: 00000000; P04: 00000000; P05: 000 00000; P06: 00000000; K01: 13333330000000000; O01: 0000; 8F

Я хочу десериализовать этоСтрока для объекта.Я уже читал об инструменте JSON, но я не знаю, сериализую и десериализую ли я в этом формате.То есть можно ли изменить разделитель по умолчанию (,), класс ({}) и нотацию массива ([])?

1 Ответ

1 голос
/ 13 февраля 2011

Для меня это выглядит как разделенный ; список пар ключ-значение, где ключ и значение разделены :.Следующий код разбирает как таковой.Я не понимаю, как это связано с JSON.

const string testInput="STA:000000,000;L:310;TM:090516195102;D:1;T:01;C:25;A00:0.166;A01:00000;A02:0.578;A03:00"+
        "000;A04:00000;A05:00000;A06:00000;A07:00000;A08:00000;A09:00000;A10:00000;A11:00000;A1"+
        "2:00000;A13:31.00;A14:30.93;P01:00000000;P02:00000000;P03:00000000;P04:00000000;P05:000"+
        "00000;P06:00000000;K01:13333330000000000;O01:0000";

IEnumerable<KeyValuePair<string,string>> ParseList(string input)
{
    string[] lines=input.Split(';');
    foreach(string line in lines)
    {
        string[] parts=line.Split(':');
        if(parts.Length!=2)
            throw new InvalidDataException(line);
        yield return new KeyValuePair<string,string>(parts[0],parts[1]);
    }
}

void Main()
{
     ParseList(testInput).Dump();       
}

Он не обрабатывает последние ;8F, но я предполагаю, что это только артефакт усеченного сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...