C# 如何从我的json对象中删除不必要的\\u0027?
我正在尝试对字符串执行简单的转换操作。目标是将我的字符串转换为json格式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
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您必须编写自己的序列化程序逻辑。您在编写自己的序列化程序逻辑时遇到的问题只是问题的冰山一角,假设您想要符合规范的输出: