【问题标题】:How to get value by key from JObject?如何从 JObject 中按键获取值?
【发布时间】:2016-05-27 09:05:36
【问题描述】:

我有一个这样的 JObject:

{
  "@STARTDATE": "'2016-02-17 00:00:00.000'",
  "@ENDDATE": "'2016-02-18 23:59:00.000'"
}

我想从 JObject 中获取 @STARTDATE 和 @ENDDATE 值。


这是我尝试完成任务的示例代码:

JObject json = JObject.Parse("{\"@STARTDATE\": \"'2016-02-17 00:00:00.000'\",\"@ENDDATE\": \"'2016-02-18 23:59:00.000'\"}");
var key = "@STARTDATE";

var value = GetJArrayValue(json, key);

private string GetJArrayValue(JObject yourJArray, JToken key)
{
    string value = "";
    foreach (JToken item in yourJArray.Children())
    {
        var itemProperties = item.Children<JProperty>();
        //If the property name is equal to key, we get the value
        var myElement = itemProperties.FirstOrDefault(x => x.Name == key.ToString());
        value = myElement.Value.ToString(); //It run into an exception here because myElement is null
        break;
    }
    return value;
}

注意:以上代码无法从JObject中按键获取值。


您能帮我找到一种方法从 JObject 中按键获取值吗?

【问题讨论】:

标签: c# json


【解决方案1】:

这应该会有所帮助 -

var json = "{'@STARTDATE': '2016-02-17 00:00:00.000',  '@ENDDATE': '2016-02-18 23:59:00.000' }";
var fdate = JObject.Parse(json)["@STARTDATE"];

【讨论】:

  • LHS 是一个 JToken,如果你想要一个字符串,你需要把 .ToString() 放在右手边。
【解决方案2】:

你也可以像这样获取 jObject 中某项的值:

JToken value;
if (json.TryGetValue(key, out value))
{
   DoSomething(value);
}

【讨论】:

    【解决方案3】:

    试试这个:

    private string GetJArrayValue(JObject yourJArray, string key)
    {
        foreach (KeyValuePair<string, JToken> keyValuePair in yourJArray)
        {
            if (key == keyValuePair.Key)
            {
                return keyValuePair.Value.ToString();
            }
        }
    }
    

    【讨论】:

    • 如果有任何子类别将不起作用。
    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 2022-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多