c# - 如何获取带有 $ 符号的 Json 变量

标签 c# json json.net

我一直在努力获取 $type 变量。

jsonTxt.json

{
  "$type": "Things.YourThings.YourThingName, Things",
  "Name": "Doe"      
}

我试图将变量作为 string 获取,但没有成功。我只是得到 null

这是我的做法:

public class CustomName
{

  [JsonProperty("$type")]
  public string Type { get; set; }
  public string Name { get; set; }
}

然后,

var customName = JsonConvert.DeserializeObject<CustomName>(jsonText);

实际上,我只是想提取名称 YourThingName 的类型。

最佳答案

试试这个:

JObject obj = JObject.Parse(jsonText);
var customName = new CustomName()
{
    Name = obj["Name"].ToString(),
    Type = obj["$type"].ToString()
};

然后,为了只获取 YourThingName,您可以使用正则表达式或仅使用 String.Split:

string name = Regex.Match(customName.Type, @"(?:\.)(\w*)(?:,)").Groups[1].ToString();

或者

string name = customName.Type.Split(',')[0].Split('.')[2];

您必须在访问不同的数组之前进行边界检查,否则您最终会遇到 IndexOutOfRange 异常。

.Net Fiddle

关于c# - 如何获取带有 $ 符号的 Json 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37587554/

相关文章:

c# - 路由,如果包含单词则匹配特定的url

php - 使用phonegap提交表单数据和文件?

json - 使用 Kickass Json api 请求有关特定 torrent 的详细信息

c# - 从嵌套在 Json 响应中的数组中反序列化对象

c# - 根据类型配置全局 Json.NET 转换器

c# - 在 JSON.NET 中反序列化未知类型

c# - 当我将代码从 IEnumerable 更改为 List 时,为什么它可以工作?

javascript - 将变量放入return中确认()

C# 和 SQL 服务器 : add parameter to query

java - Struts2 + Json 项目序列化