c# - C# 中从 JSON 读取特定值

标签 c# .net json json-deserialization

所以我有一个 JSON 字符串,我只想读取一个特定值。如何从下面的字符串中选择“请阅读我!”?

var readString = /*Read me please!*/

JSON 字符串:

"{\"aString\":\"Read me please!\"}"

为了更好地理解,我该如何在这里做同样的事情? (只是“请读我!”):

"{\"Result\":
    {    
    \"aString\":\"Read me please!\",
    \"anotherString\":\"Dont read me!\"
    }    
}"

如果两种选择都有不同的解决方案,我想都知道。

PS:我不想将值保存到对象/类等中。只是临时在 var readString 中。

最佳答案

你可以编写一个模型:

public class MyModel
{
    public string AString { get; set; }
}

然后使用 JSON 序列化器,例如 Json.NET :

string readString = "{\"aString\":\"Read me please!\"}";
MyModel model = JsonConvert.DeserializeObject<MyModel>(readString);
Console.WriteLine(model.AString);

如果您不想使用第三方解决方案,您可以使用内置的 JavaScriptSerializer类:

string readString = "{\"aString\":\"Read me please!\"}";
MyModel model = new JavaScriptSerializer().Deserialize<MyModel>(readString);
Console.WriteLine(model.AString);

现在假设您想要处理第二个 JSON 字符串,您可以简单地调整您的模型:

public class Wrapper
{
    public MyModel Result { get; set; }
}

public class MyModel
{
    public string AString { get; set; }
    public string AnotherString { get; set; }
}

然后反序列化到这个包装类:

string readString = ... the JSON string in your second example ...;
Wrapper wrapper = JsonConvert.DeserializeObject<Wrapper>(readString);
Console.WriteLine(wrapper.Result.AString);
Console.WriteLine(wrapper.Result.AnotherString);
<小时/>

更新:

如果您不想反序列化为模型,您可以直接执行以下操作:

string readString = "{\"aString\":\"Read me please!\"}";
var res = (JObject)JsonConvert.DeserializeObject(readString);
Console.WriteLine(res.Value<string>("aString"));

或使用内置的 JavaScriptSerializer 类:

string readString = "{\"aString\":\"Read me please!\"}";
var serializer = new JavaScriptSerializer();
var res = (IDictionary<string, object>)serializer.DeserializeObject(readString);
Console.WriteLine(res["aString"]);

关于c# - C# 中从 JSON 读取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41808673/

相关文章:

c# - 是否有用于 Where 和 Select 的 (T, int) 重载的 LINQ 语法?

c# - 在数组中添加新字节并移动其余字节

c# - 在测试方法中从 JSON 文件中删除元素

.net - HylaFax,如何从 .net 应用程序使用它

java - 放心: Size of json response

c# - 将 int 转换为 dropdownlistfor 的字符串

C# 构造函数重载 + 显式强制转换 = 缺少 .dll 引用

c# - 如何将字符串转换为具有 unix 行结尾的字节?

java - 使用 jaxb 进行 JSON 解码

javascript - d3.js - 通过 csv 在饼图中显示层次结构