【问题标题】:How do I get a value from a Json in .NET 3.5 C#?如何从 .NET 3.5 C# 中的 Json 获取值?
【发布时间】:2020-10-16 13:57:39
【问题描述】:

在 .NET 4.5 上我得到了通过

string respString= response.Body; // { "name":"John", "age":30, "car":null}
var respObj= JsonConvert.DeserializeObject<dynamic>(respString);

在这种情况下,我能够为每个属性创建一个动态对象。

但是,我已经降到 .NET 3.5,并且动态选项不可用。怎么能 我将每个属性都设为

string gottenName= respObj.name;
double gottenAge = respObj.age; 

等等

谢谢你们!

【问题讨论】:

标签: c# .net json object dynamic


【解决方案1】:

访问 JSON 到 C# 类转换服务,例如:https://www.jsonutils.com/

在 JSON 中粘贴:

{ "name":"John", "age":30, "car":null}

它会生成一个类:

public class Example
{
    public string name { get; set; }
    public int age { get; set; }
    public object car { get; set; }
}

那你就不需要动态了:

Example respObj= JsonConvert.DeserializeObject<Example>(respString);

【讨论】:

  • 你的意思是手动去网站输入字符串?
  • 为了生成Class除非你想自己写。
  • 问题是我想从 Json 本身创建它。不要将 get 和 setter 硬编码到可能会更改的 json 中
  • 我什至可以解析字符串,但正在寻找其他东西
  • 最接近的是使用 Linq 的 AnonTypes(可惜没有 JSON 扩展,只有对象、XML 和 SQL),如果没有 Dynamic,您将不得不自己将 JSON 解析为字符串。 JSON 格式不应该有太大变化,并且有一个技巧,如果您只需要 Name 和 Age 字段(以及其他数据更改),它仍然可以反序列化。我真正关心的是为什么 .Net 3.5?解决方案是将所有产品升级到 .Net 4.6 或更高版本。
【解决方案2】:

您还可以使用 newtonsoft.dll 解析为 C# 对象

代码将是

  JObject jsonResponse = JObject.Parse(respString);
   //you can access name value using 
  var nameValue=  (string)jsonResponse["name"]
   //respString is jsonstring

【讨论】:

  • 太棒了!你会知道如何获取子元素的属性吗?例如,如果年龄有出生月份的子元素等
  • namevalu 也是对象。您需要检查对象层次结构
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多