【问题标题】:Json Formatting in ASPNET Web ApiASPNET Web Api 中的 Json 格式
【发布时间】:2021-05-31 17:18:18
【问题描述】:

我得到这样的 json :

"[{\"Id\":59,\"SuiteCode\":null,\"IsArrived\":true,\"UserId\":\"a49a10d2-fc3f-477a-b087-5b0d07545964\",\"Price\":100.0}]"

我的 c# 代码是:

List<StorageVM> storageVMList = storageServices.GetAll().Where(x => 
     x.UserId == userId).ToList();


 var data = JsonConvert.SerializeObject(storageVMList);

我想转换未转义的 json 引号。 ("[{")

{
"Id":59,
"SuiteCode" :null,
"IsArrived":true,
"UserId": "a49a10d2-fc3f-477a-b087-5b0d07545964",
"Price":100.0

}

【问题讨论】:

  • 对问题的更改太多。是您获取的字符串还是需要转换的 json?
  • 我回滚到原来的问题。我不需要转义引号。
  • 希望此链接对您有所帮助:newtonsoft.com/json/help/html/SerializingJSON.htm
  • 您的源 json 没有姓名或电子邮件地址。您希望如何获得所需的结果?
  • 已编辑问题。我需要没有转义的引号

标签: c# json webapi


【解决方案1】:

我不确定我是否 100% 理解您的问题,但我认为您想转换 JSON 对象。最简单的方法是使用序列化/反序列化。为此,请使用 Newtonsoft Json 或 System.Text.Json API。您可以在 MS Docs (https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to?pivots=dotnet-5-0) 上找到示例。您可以将传入的对象反序列化为一个类,访问它的属性,并在另一个类中将其序列化为您想要的方式,然后对该类进行序列化。

【讨论】:

  • 一位编辑编辑了我原来的问题。我滚了回去。我不需要转义引号。 "\"\
【解决方案2】:

您的 json 被序列化“两次”,并且为了将其转换为正确的类对象,您还需要将其反序列化两次。

public class Rootobject
{
    public int Id { get; set; }
    public object SuiteCode { get; set; }
    public bool IsArrived { get; set; }
    public string UserId { get; set; }
    public double Price { get; set; }
    public string ImageUrl { get; set; }
    public object Notes { get; set; }
    public string Description { get; set; }
    public int Payment_Type { get; set; }
    public object Status { get; set; }
    public DateTime Date { get; set; }
    public int Weight { get; set; }
    public bool IsDelivered { get; set; }
}

// First to remove extra encoding
var jsonStr = JsonConvert.DeserializeObject(File.ReadAllText(filename));

// Second to convert it to your object.
var rootObj = JsonConvert.DeserializeObject<List<Rootobject>>(jsonStr.ToString());

// Then you can use a Select statement to get your desired object... if that information is available.

public class UserObject
{
    public User user { get; set; }
    public int min_build_version { get; set; }
}

public class User
{
    public string email { get; set; }
    public string avatar_url { get; set; }
    public string name { get; set; }
    public string id { get; set; }
}

var converted = rootObj.Select(x => new UserObject()
{
    user = new User()
    {
        id = x.UserId,
        name = x.Description
    }
});

【讨论】:

    【解决方案3】:

    我修好了

     var json = JsonConvert.SerializeObject(shops, Formatting.None);
     string contentCorrected = json.Replace(@"\", "");
    var billList = JsonConvert.DeserializeObject<List<Dictionary<string, string>>> 
    (contentCorrected);
    

    【讨论】:

      猜你喜欢
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      相关资源
      最近更新 更多