2016-09-30 121 views
0

在我的c#应用程序中,我从外部设备收到以下消息。Laravel反序列化消息

Title: Color, Text: 6, Number: 0, Logic: false 

如何从此字符串消息中创建属性?

通常我反序列化它,但在这种情况下,它不是json!

+0

反序列化是解析* something *和返回类的过程的通用名称。没有一个通用的反序列化器。除此之外还有二进制,xml和json反序列化器。如果你想反序列化一个自定义格式,你必须自己创建反序列化器。 *这是什么格式?也许有人已经创建了这个 –

回答

1

嗯,你总是可以回落到美好的旧手工解析......假设属性值永远不会包含字符,,你可以做这样的事情:

static IDictionary<string, string> Parse(string input) 
{ 
    var result = new Dictionary<string, string>(); 
    var pairs = input.Split(','); 
    foreach (var pair in pairs) 
    { 
     var parts = pair.Split(new[] { ':' }, 2); 
     string name = parts[0]; 
     string value = parts[1]; 
     result.Add(name, value); 
    } 
    return result; 
} 

(当然,如果你想要反序列化它作为一个对象,你将不得不将每个值转换为实际属性类型)

+0

的解串器谢谢伟大的作品。 – Jamie