c# - 访问 JSON 字符串中的无效成员名称

标签 c# json

我有这个字符串

"{\"0\":\"test\"}"

我正在使用 JSON.net .我试过这条线

var j = JsonConvert.DeserializeObject(input_string)
var t = j["0"]; //This causes a compile error
var k = j.Keys

我也许可以更改我的输入字符串,但我宁愿保持这种方式。我如何在 json.net 中访问它?

最佳答案

目前,您正在使用非泛型 DeserializeObject,它会返回一个 object,因此会出现编译时错误。一种可能是将 json 解析为 JObject:

void Main()
{
    var json = "{\"0\":\"test\"}";
    var jobject = JObject.Parse(json);
    Console.WriteLine(jobject["0"]);
}

另一种是创建一个类并使用适当的 JsonProperty 属性对其进行注释:

void Main()
{
    var json = "{\"0\":\"test\"}";
    var obj = JsonConvert.DeserializeObject<X>(json);
    Console.WriteLine(obj.Foo);
}

public class X
{
    [JsonProperty("0")]
    public string Foo { get; set; }
}

编辑

您可以使用 foreach 迭代该 JObject:

foreach (var element in jobject)
{
    Console.WriteLine($"Key: {element.Key}, Value: {element.Value }");
}

或者使用 LINQ:

var enumerable = jobject.AsJEnumerable()
                        .Cast<JProperty>()
                        .Select(x => new { Key = x.Name, Value = x.Value });

关于c# - 访问 JSON 字符串中的无效成员名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290675/

相关文章:

c# - 将非字母数字字形转换为 unicode,同时保留字母数字

c# - 选择要列出Linq的元素

c# - 生成 Google Chart JSON 数组

javascript - 根据另一个 json 数组将 observableArray 映射到 Multiple SELECT

json - 从列中获取 JSON 值

json - 我如何进行模式匹配以获得 serde_json 已解析的数字?

javascript - 获取 javascript 中最后一次出现的 json 元素的值

c# - 如何计算数字的正确宽度(以像素为单位)?

c# - C# 中的标准 Blowfish

c# - 即使从 OnClientClick 返回 false 后也会触发回发