C# 从json字符串中提取id
我有以下json字符串。使用c#从中提取id的最佳方法是什么 开发人员时间最便宜的方法是使用C#C# 从json字符串中提取id,c#,C#,我有以下json字符串。使用c#从中提取id的最佳方法是什么 开发人员时间最便宜的方法是使用C#dynamic using Newtonsoft.Json; Int32 GetId() { String jsonStr = "{ \"count\":..."; dynamic jsonBlob = JObject.Parse( jsonStr ); return jsonBlob.value[0].id; } 注意:我个人反对使用动态,因为这样会失去编译时类型安全性
dynamic
using Newtonsoft.Json;
Int32 GetId()
{
String jsonStr = "{ \"count\":...";
dynamic jsonBlob = JObject.Parse( jsonStr );
return jsonBlob.value[0].id;
}
注意:我个人反对使用动态
,因为这样会失去编译时类型安全性,而且动态
对于一次性操作来说成本有点高,所以您可能希望使用Json.NET自己的令牌对象来处理它:
JObject root = JObject.Parse( jsonStr );
JToken idToken = root.Properties["value"].GetChildren().First().Properties["id"];
return idToken.ToObject<Int32>();
使用Newtonsoft.Json:
JObejct.Parse(str)[“value”].First()[“id”].value()
Newtonsoft几乎是c#中处理json的方式
请注意,数组中可以有多个项。此代码取第一个。请参阅。我要退房。我应该回答你的问题!我可能会首先调用FirstOrDefault(),然后测试它是否为null。如果集合为空,First()可能会导致应用程序失败。除此之外,这是一个很好的答案
JObject root = JObject.Parse( jsonStr );
JToken idToken = root.Properties["value"].GetChildren().First().Properties["id"];
return idToken.ToObject<Int32>();
class Foo {
public Int32 Count { get; set; }
public FooValue[] Value { get; set; }
}
class FooValue {
public Int32 Id { get; set; }
public Guid ProjectId { get; set; }
public String Name { get; set; }
}
Foo foo = JsonConvert.Deserialize<Foo>( jsonStr );
return foo.Value[0].Id;
Int32 idIdx = jsonStr.IndexOf("\"id\":");
if( idIdx == -1 ) return null;
Int32 commaIdx = jsonStr.IndexOf(",", idIdx);
if( commaIdx == -1 ) return null;
return jsonStr.Substring( idIdx, commaIdx - idIdx );