代码之家  ›  专栏  ›  技术社区  ›  HenrikP

如何读取此对象

c#
  •  -4
  • HenrikP  · 技术社区  · 9 年前

    我想从对象读取警报消息

    {
        alert = "1\n2\n3";
        sound = default;
    }
    

    我尝试过用newtonsoft将其序列化为JSON,也尝试过将其转换为类。但由于格式化,两者都失败了。

    2 回复  |  直到 9 年前
        1
  •  1
  •   Patrick Hofman Wahid Bitar    9 年前

    这不是有效的JSON,所以您可以做的最好的事情就是尝试自己解析它。

    您可以使用一个成熟的解析器/词法分析器,如ANTLR。根据预期的其他输出,使用一些C#或正则表达式可能已经足够了。

    此正则表达式可能是一个开始:

    alert = \"(.*?)\";.* sound = (.*?);
    
        2
  •  1
  •   Darin Dimitrov    9 年前

    我已经尝试将其序列化为JSON

    但这不是JSON。

    因此,您可以尝试使用一些正则表达式来提取所需的值:

    var match = Regex.Match(payloadStr, @"alert\s=\s\""(.+)\""");
    if (match.Success)
    {
        string alertText = match.Groups[1].Value;
    }
    

    就这个正则表达式的可靠性而言,这在很大程度上取决于正在使用的自定义格式以及它可以获得的可能值。