【问题标题】:Stuck on parsing JSON the right way坚持以正确的方式解析 JSON
【发布时间】:2020-07-13 06:00:47
【问题描述】:

我已经搜索并尝试了很多东西,但我无法获得以下信息:

{"Plaats" : ["{"isEmpty":true,"isWhite":false,"isBlack":false}"]}

这是我目前的回复,但我需要采用这种格式:

{"Plaats" : [{"isEmpty":true,"isWhite":false,"isBlack":false}]}

所以基本上没有多余的引号。

这是我的 C# 代码:

public class Vaag
{
    public bool isEmpty { get; set; }
    public bool isWhite { get; set; }
    public bool isBlack { get; set; }
}

var tempObj = JsonConvert.DeserializeObject(_Context.JsonBord);
dynamic JsonObj = tempObj;
var testt = JsonConvert.SerializeObject(new Vaag() { isEmpty = true, isWhite = false, isBlack = false });
JsonObj[0][0] = testt;
string result = Newtonsoft.Json.JsonConvert.SerializeObject(JsonObj);
return result.Replace(@"\", ""); ;

【问题讨论】:

  • JSON 都是无效的,所有的零都是什么?
  • @RyanThomas 暂时忽略所有的零,它们都将是 {"isEmpty":true,"isWhite":false,"isBlack":false}
  • 正如@RyanThomas 所说>>它不是 json
  • @FrankNielsen 我编辑了我的问题,实际上看起来像这样。额外的报价是问题

标签: c# json parsing json.net


【解决方案1】:

如何在 json 中修复 json(类似这样):

public class Vaag
{
    public string Plaats { get; set; }
    [JsonIgnore]
    public List<VaagFlags> PlaatsFlags => JsonConvert.DeserializeObject<VaagFlags[]>(Plaats);
}

public class VaagFlags
{
    public bool isEmpty { get; set; }
    public bool isWhite { get; set; }
    public bool isBlack { get; set; }
}

var vaag = JsonConvert.DeserializeObject<Vaag>(jsonString);

【讨论】:

    【解决方案2】:

    好的,您用来反序列化 JSON 的类需要看起来像您的 JSON。下面的例子。

    public class VaagCollection
    {
        public List<Vaag> Plaats { get; set }
    
    }
    public class Vaag
    {
        public bool isEmpty { get; set; }
        public bool isWhite { get; set; }
        public bool isBlack { get; set; }
    }
    
    var tempObj = JsonConvert.DeserializeObject<VaagCollection>(_Context.JsonBord);
    
    
    tempObj.Plaats.Add(new Vaag() { isEmpty = true, isWhite = false, isBlack = false });
    string result = Newtonsoft.Json.JsonConvert.SerializeObject(tempObj);
    

    【讨论】:

    • 我们在某个轨道上,但 Vaag 被定义为字符串 json。所以一定是List&lt;string&gt; Plaats。然后将其反序列化为一个对象。
    猜你喜欢
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多