C#,将字符串转换为Newtonsoft.Json.Linq.JToken

时间:2018-11-12 19:23:25

标签: c# linq json.net

在C#项目中,我收到一个Newtonsoft.Json.Linq.JObject并遍历其键,值

public static void info(JObject aInfoJSON){
 foreach(var it in aInfoJSON){
     if (it.Key.Equals("str")){/*do something*/}
     if (it.Value.Equals(?)){/*so something*/}
  }
} 

此处it.Key类型为string,但it.ValueNewtonsoft.Json.Linq.JToken。传递"something"永远不会在条件变为真时传递,也不会传递"{something}"JToken.parse("something")引发异常。

  

Newtonsoft.Json.JsonReaderException:'解析值s时遇到意外字符。路径”,第0行,位置0。'

接收到的JObject示例如下:{{ "name": "systems api", "version": "11.0.7.72", "apiVersion": "v1"}}

我应该如何进行比较?

1 个答案:

答案 0 :(得分:2)

使用JValue,您可以选择值类型并沿这些方式实现某些东西。

public static void info(JObject aInfoJSON){
  foreach(var it in aInfoJSON){
     if (it.Key.Equals("str")){/*do something*/}

  switch(it.Value.Type)
  {
    case JToken.String:
      if (it.Value.Value<string>().Equals("?"))
        {/*so something*/}
    case JToken.Float:
        if(it.Value.Value<Float>().Equals(0)); 
        {/*so something*/}
  }
}