【问题标题】:How to remove unnecessary \\u0027 from my json object?如何从我的 json 对象中删除不必要的 \\u0027?
【发布时间】:2018-04-13 02:23:57
【问题描述】:

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

string clientID= newClient.GetClientId();
string clientSecret = "ZDUyYTYyMjYtMTcyNC00ODkxLWI2NmMtMDlhZjA3MDdiOGQ2";
var stringObject= "{ clientID:"+ "'"+clientID+"', clientSecret:"+"'"+clientSecret+"'}" ;
var json= new JavaScriptSerializer().Serialize(stringObject);

但是,当我打印 json 时,输出显示如下:

"{ 客户 ID:\u0027YmY3NjZkM2ItZDg3MC00ZjQwLTk1NjktNTE0N2M1YzExOWMx\u0027, clientSecret:\u0027ZDUyYTYyMjYtMTcyNC00ODkxLWI2NmMtMDlhZjA3MDdiOGQ2\u0027}\"

如何删除不必要的 \u0027 ?

【问题讨论】:

  • 只需创建一个具有 2 个字符串属性的类 Foo:clientID 和 clientSecret,将值分配给 Foo 的一个实例,然后序列化该 Foo 的实例,而不是序列化一个字符串
  • JSON 使用双引号,而不是单引号。另外,clientID 和 clientSecret 也应该用双引号括起来。
  • \u0027 是您将自己添加到字符串中的撇号字符。使用像 JSON.NET 这样的适当的 JSON 序列化并像 @rene 说的那样序列化类。

标签: c# asp.net json type-conversion


【解决方案1】:

第一步是建模一个与您需要的 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 的代码仍然可以工作,但documentation 中指出您最好切换到Json.NET 来序列化JSON。您的方法将是相同的。

【讨论】:

  • 谢谢..我应用了这个并且它有效..但是我仍然想知道是否有一种方法可以将字符串直接转换为json格式。
  • @the_coder_in_me 你必须编写自己的序列化程序逻辑。假设您想要一个符合规范的输出,您的方法遇到的问题只是您在编写自己的序列化程序逻辑时将面临的问题的冰山一角:json.org
【解决方案2】:

使用 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"
}

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      相关资源
      最近更新 更多