我有以下 JToken
:
{
"ID": "9dbefe3f5424d972e040007f010038f2"
}
但是每当我在
ToString()
对象上运行 JToken
以获取字符串形式的底层 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
。当您在 ToString()
或 JObject
上调用 JArray
时,您应该只期望获得完整(有效)的 JSON。关于c# - JToken.ToString() 删除大括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26476966/