【问题标题】:Parse JSON style text with filehelpers使用文件助手解析 JSON 样式文本
【发布时间】:2016-12-30 00:50:17
【问题描述】:

所以在 CSV 文件中,我们将 "foo='foo value';bar='bar value';" 作为一列值

我已经做了一些研究并认为最坏的情况是我可以简单地用 { "..." } 将该值括起来并替换 ';'使用 ',' 和 '=' 使用 ':' 然后只使用 JSON 解析,但我是文件助手的新手,所以我认为可以很容易地使用该库来完成此操作,无需额外工作。我一直在寻找,但可能没有问google 正确的问题。

表示我正在发布问题。

在最坏的情况下,我将构建一个自定义解析器并执行上述操作。

希望这个问题很清楚,如果没有,请询​​问,我会尽我所能进行编辑以澄清。

【问题讨论】:

  • 我理解这个问题,但我想不出一种方法来使用带有键/值对的文件助手。就个人而言,我可能会进行字符串替换并将其作为自然 JSON 读取,或者将 ; 替换为 "\n" 并将其作为 ini 文件读取(更少的字符串替换)。
  • 感谢您的建议,也许您可​​以提供您提出的 INI 方法的示例?
  • 发布一个应该为你处理所有繁重工作的自定义方法。 (我还没有测试过代码,所以它可能容易出现一些拼写错误,但它应该适用于您提供的字符串)
  • @KraangPrime,最终目标是获得强类型结果,因此我可以使用我发布的 json 解析路线。我确实给了你+1,因为这是一个可行的解决方案。如果您想编辑为 Foo 的强类型返回,我将标记为答案
  • @KraangPrime,我同意有很多方法。我想我会走 JSON 路线并返回我正在寻找的对象。感谢您抽出宝贵的时间,您的回答很好。希望你能得到很多支持投票的朋友。我的解决方案一旦写好就会发布

标签: c# parsing filehelpers


【解决方案1】:

此方法应处理从您提供的格式中读取值并返回包含 keyPairs 中所有值的Dictionary

public Dictionary GetData(string data) {
    Dictionary<string, string> dictRet = new Dictionary<string, string>();

    strKeyPairs = data.Split(new[] { ";" }, StringSplitOptions.None);

    foreach (string strKeyPair in strKeyPairs) {
        strKeyValuePair = strKeyPair.Split(new[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
        if (strKeyValuePair.Length > 0) {
            if (strKeyValuePair.Length == 2) {
                dictRet[strKeyValuePair[0]] = strKeyValuePair[1];
            } else {
                dictRet[strKeyValuePair[0]] = string.Empty;
            }
        }

    }

    return dictRet;
}

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2013-12-10
    • 1970-01-01
    • 2018-05-07
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多