C# 如何从我的json对象中删除不必要的\\u0027?

C# 如何从我的json对象中删除不必要的\\u0027?,c#,asp.net,json,type-conversion,C#,Asp.net,Json,Type Conversion,我正在尝试对字符串执行简单的转换操作。目标是将我的字符串转换为json格式 string clientID= newClient.GetClientId(); string clientSecret = "ZDUyYTYyMjYtMTcyNC00ODkxLWI2NmMtMDlhZjA3MDdiOGQ2"; var stringObject= "{ clientID:"+ "'"+clientID+"', clientSecret:"+"'"+clientSecret+"'}" ; var jso

我正在尝试对字符串执行简单的转换操作。目标是将我的字符串转换为json格式

string clientID= newClient.GetClientId();
string clientSecret = "ZDUyYTYyMjYtMTcyNC00ODkxLWI2NmMtMDlhZjA3MDdiOGQ2";
var stringObject= "{ clientID:"+ "'"+clientID+"', clientSecret:"+"'"+clientSecret+"'}" ;
var json= new JavaScriptSerializer().Serialize(stringObject);
但是,当我打印json时,输出显示如下:

{clientID:\u0027YmY3NjZkM2ItZDg3MC00ZjQwLTk1NjktNTE0N2M1YzExOWMx\u0027,clientSecret:\u0027zduyytyymjytcync00odkxlwi2mmtmdlhzja3mdiogq2\u0027}


如何删除不必要的\u0027?

第一步是对符合所需JSON结构的类进行建模。在这种情况下,具有2个字符串属性的类将执行以下操作:

public class FooType 
{
   public string clientID {get;set;}
   public string clientSecret {get;set;}
}
接下来,我们需要实例化该类并设置其属性:

var foo = new FooType { 
    clientID = newClient.GetClientId(),
    clientSecret = "ZDUyYTYyMjYtMTcyNC00ODkxLWI2NmMtMDlhZjA3MDdiOGQ2",
};
然后我们可以将其序列化为JSON:

var json= new JavaScriptSerializer().Serialize(foo);
json
中的结果将是:

{"clientID":"42","clientSecret":"ZDUyYTYyMjYtMTcyNC00ODkxLWI2NmMtMDlhZjA3MDdiOGQ2"}
请注意,这些值是如何用双引号括起来的,而不是用单引号括起来的,并且在转义、删除或替换字符时不需要特别小心。这一切都由序列化程序处理,因为这是他们的主要职责


尽管使用
JavaScriptSerializer
的代码仍然可以工作,但在中指出,最好切换到以序列化JSON。你的方法将是相同的

使用Newtonsoft.JSON.Linq中的JObject可以解决试图直接转换字符串的人的问题

   JObject json = JObject.Parse(str);
这是示例代码:

using System.Web;
using Newtonsoft.Json.Linq;

namespace MyTestProjectConsole
{
    public class Test1Json
    {
        public void ConvertJson()
       {
            string clientID = "aa";
            string clientSecret = "bb";
            var stringObject = "{ clientID:" + "'" + clientID + "', clientSecret:" + "'" + clientSecret + "'}";
            var json = JObject.Parse(stringObject);
            Console.WriteLine(json);
        }

        public static void Main()
        {
            Test1Json obj = new Test1Json();
            obj.ConvertJson();
            Console.ReadKey();
        }
    }
}
这将在控制台中生成以下输出:

{
  "clientID": "aa",
  "clientSecret": "bb"
}

您可以使用删除这些字符的函数替换json文本字符串:

var json= new JavaScriptSerializer().Serialize(stringObject);
json = System.Text.RegularExpressions.Regex.Unescape(json);

只需创建一个具有两个字符串属性的类Foo:clientID和clientSecret,将值分配给Foo实例,然后序列化该Foo实例,而不是序列化stringJSON。json使用双引号,而不是单引号。另外,clientID和clientSecret也应该用双引号括起来。\u0027是一个撇号字符,您将自己添加到字符串中。使用正确的JSON序列化(如JSON.NET)并序列化类(如@rene said)。谢谢..我应用了这个,它可以工作。。但是,我仍然想知道是否有一种方法可以将字符串直接转换为json格式。@U coder\U in\U me您必须编写自己的序列化程序逻辑。您在编写自己的序列化程序逻辑时遇到的问题只是问题的冰山一角,假设您想要符合规范的输出: