Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JToken.ToString()删除花括号_C#_Asp.net_Json_Json.net - Fatal编程技术网

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”