gpt4 book ai didi

c# - JToken.ToString() 删除大括号

转载 作者:行者123 更新时间:2023-11-30 13:37:03 25 4
gpt4 key购买 nike

我有以下JToken:

{
"ID": "9dbefe3f5424d972e040007f010038f2"
}

但每当我在 JToken 对象上运行 ToString() 以获取字符串形式的底层 JSON 时,它都会返回:

\"ID\": \"9dbefe3f5424d972e040007f010038f2\"

转义引号是预料之中的,但为什么要删除花括号?它是有效的 JSON。这似乎只发生在某些情况下,因为我能够成功运行 ToString() 并在其他(更复杂的)JTokens 上保持花括号完好无损。

最佳答案

ToString() 返回 JToken 内容的 JSON 表示形式。 JToken 是一个抽象类,因此返回什么 JSON 取决于它是什么类型的 JToken(以及它包含的内容)。

这里有一个简短的例子可以说明这一点:

class Program
{
static void Main(string[] args)
{
JObject jo = new JObject();
jo.Add("ID", "9dbefe3f5424d972e040007f010038f2");

// token is a JObject
DumpToken(jo);

// token is a JProperty (the first property of the JObject)
DumpToken(jo.Properties().First());

// token is a JValue (the value of the "ID" property in the JObject)
DumpToken(jo["ID"]);
}

private static void DumpToken(JToken token)
{
Console.WriteLine(token.GetType().Name);
Console.WriteLine(token.ToString());
Console.WriteLine();
}
}

输出:

JObject
{
"ID": "9dbefe3f5424d972e040007f010038f2"
}

JProperty
"ID": "9dbefe3f5424d972e040007f010038f2"

JValue
9dbefe3f5424d972e040007f010038f2

因此,我怀疑当您从 ToString() 获取一个裸名值对时,您在代码中引用了一个 JProperty,而不是 JObject。当您在 JObjectJArray 上调用 ToString() 时,您应该只期望获得完整(有效)的 JSON。

关于c# - JToken.ToString() 删除大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26476966/

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