【问题标题】:How to check null values in dynamic JObject?如何检查动态 JObject 中的空值?
【发布时间】:2020-06-13 19:50:32
【问题描述】:

我有一个JObject 变量UserPreferences (C#);它将根据请求包含动态键值对

保证密钥存在。我只想检查键是否为空值,以便我可以抛出 "Missing fields" 异常,然后用户可以填写字段并再次发送请求。我怎样才能实现这一点(最好通过对 UserPreferences 对象 [下面] 中存在的键进行迭代)? 控制器接收请求并将其映射到用户类对象。如何检查任何键中是否有空值?

我的请求将采用以下形式:

{
 "UserName":"Mark",
 "UserPreferences":{
    "Section1":"Do",
    "Section2":"Delete"
  }
}

也可以是这样的:

{
     "UserName":"Mark",
     "UserPreferences":{
        "Section1":"Do",
        "Section2":"Delete",
        "Section4":"Add_Name" 
      }
 }

因此,请求可以在 UserPreferences 对象中包含动态数量的键值对(更多部分及其值);但有时用户可能会将该字段留空。所以,当请求到达时,它看起来像这样:

 {
       "UserName":"Mark",
       "UserPreferences":{
          "Section1":"",
          "Section2":""
          }
  }

或者看起来像这样(另一个例子):

 {
       "UserName":"Mark",
       "UserPreferences":{
          "Section1":"Do",
          "Section2":""
          }
  }

这是我处理请求的类的样子:

public class User
{
 public string User{get;set;}
 public JObject UserPreferences{get;set;}
}

请注意,我不想使用任何其他结构(如字典)来完全替代上面使用的 JObject 结构。

【问题讨论】:

标签: c# json


【解决方案1】:

UserPreferences 解析为Dictionary<string, string> 并检查字典值是否为空:

public class User
{
    public string UserName { get; set; }
    public Dictionary<string, string> UserPreferences { get; set; }
}

User u = ... // parse json
if(u.UserPreferences.Values.Any(v => v == null)) 
{
    ...
}

【讨论】:

    猜你喜欢
    • 2014-07-26
    • 2021-03-14
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2021-07-03
    相关资源
    最近更新 更多