gpt4 book ai didi

c# - 如何将字符串反序列化为对象(格式类似于对象表示法的字符串)

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:07 26 4
gpt4 key购买 nike

我有一个看起来像这样的字符串。它不是 JSON 也不是 XML。

{Foo={name=My Foo Value, active=true, some date=20170630}, Bar={name=My Bar Value}, Key With Space={name=Foo Bar, active=false}}

这里是假设:

  1. 对象被 {} 括起来
  2. 键名中可以有空格
  3. 键由空格和逗号分隔 ( , )
  4. 值通过等号分配给键
  5. 键可以有多个值,值用 {} 括起来, 值内的值由空格和逗号分隔 ( , )。例如,这是一个具有三个值的键:{My Foo Key={one=true, two=true, third value=false}}

我的策略是反序列化为 Dictionary<string, object首先,担心以后的递归。任何建议(现有图书馆?)表示赞赏!

这是我的

var stringContentTrimmed = stringContent.Substring(1, stringContent.Length - 2);
var objects = stringContentTrimmed.Split(',')
.Select(x => x.Trim())
.Where(x => !String.IsNullOrWhiteSpace(x));

TLDRSplit功能也在 split 我的值(value)观,这不是我想要的。

enter image description here

最佳答案

确实,您需要对此有一个适当的规范或语法,但我会大胆猜测并说没有,如果有,实际值将不符合它。

您最好的选择可能是:

  • 消除 = { }, 字符附近的任何空格
  • 将任何 , 替换为 ","
  • 将任何 = 替换为 "="
  • 将任何 { 替换为 {"
  • 将任何 替换为 "
  • 将任何 "{ 替换为 {
  • 将任何 }" 替换为 }
  • 将任何 = 替换为 :

然后将其视为 JSON。

我用你的例子试过了,它成功了。我不知道它是否适用于您的实际值——这将取决于它们是否遵守您所描述的限制。如果键或值嵌入任何 "{}:=, 或者前导或尾随空格很重要,则它将不起作用。

关于c# - 如何将字符串反序列化为对象(格式类似于对象表示法的字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45307762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com