C# JToken.ToString()删除花括号
我有以下C# JToken.ToString()删除花括号,c#,asp.net,json,json.net,C#,Asp.net,Json,Json.net,我有以下JToken: { "ID": "9dbefe3f5424d972e040007f010038f2" } 但每当我在JToken对象上运行ToString()以获取字符串形式的底层JSON时,它都会返回: \"ID\": \"9dbefe3f5424d972e040007f010038f2\" 转义引号是意料之中的事,但为什么要去掉大括号呢?它是有效的JSON。这似乎只在某些情况下才会发生,因为我能够成功地运行ToString(),并在其他(更复杂的)JTokensToStr
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
1)调用ToString()
时,才能获得完整(有效)的JSON。Visual Studio在GUI中显示字符串时,会对引号进行转义。要查看字符串而不转义,请在即时窗口中键入System.Diagnostics.Debug.WriteLine(token.ToString())
。2) 你在用什么图书馆?3) 你能提供问题的答案吗?无法复制。在即时窗口中,键入Debug.WriteLine(JObject.Parse(“{”ID\:\“9dbefe3f5424d972e040007f010038f2\”).ToString()
返回{”ID:“9dbefe3f5424d972e040007f010038f2”