JToken.ToString()正在删除大括号
本文关键字:删除 ToString JToken | 更新日期: 2023-09-27 18:27:10
我有以下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
的引用。当您在JObject
或JArray
上调用ToString()
时,您应该只期望得到完整(有效)的JSON。