Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JSON.net自定义序列化/反序列化_.net_Json - Fatal编程技术网

使用JSON.net自定义序列化/反序列化

使用JSON.net自定义序列化/反序列化,.net,json,.net,Json,我的应用程序接收以下格式的短信: STA:000000000;L:310;商标号码: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;P

我的应用程序接收以下格式的短信:

STA:000000000;L:310;商标号码: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:133333000000000000;O01:0000;8F


我想将此字符串反序列化为对象。我已经读过关于JSON工具的文章,但我不知道是否用这种格式进行序列化和反序列化。也就是说,我可以更改默认分隔符(
)和类(
{}
)以及数组符号(
[]
)?

这看起来像一个
键-值对的分隔列表,其中键和值由
分隔。下面的代码就是这样解析的。我不明白这与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();       
}
常量字符串测试输入=“STA:000000000;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:13333300000000000;O01:0000”; IEnumerable语法分析列表(字符串输入) { string[]line=input.Split(“;”); foreach(行中的字符串行) { string[]parts=line.Split(“:”); 如果(零件长度!=2) 抛出新的InvalidDataException(行); 返回新的KeyValuePair(部件[0],部件[1]); } } void Main() { ParseList(testInput.Dump(); }

它不处理最后一个
;8F
但我假设这只是一个被截断消息的工件。

这不是json-为什么要使用json序列化程序?最好简单地告诉我们该格式的规则是什么,这样我们就可以提供指导。但我的指导是:忘记json吧——那不是json。格式看起来就像是分隔的键值对,但很难看到作为对象,您希望它看起来像什么。。。你有解释的例子吗?i、 这些数据代表什么?请发表评论。这些对值是通过sms发送的gprs数据记录器的输出。考虑到字符串的结构不一致(即某些对/值有时被省略),将此类字符串读取到对象(反序列化)的最佳方式是什么?谢谢你的回复,假设我有一个STA,L,TM,D,。。。财产。我知道在上面的字符串中,有些时候一些对值被省略了,知道什么是向类读取这样一个字符串的最佳实践吗?