Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从json字符串中提取id_C# - Fatal编程技术网

C# 从json字符串中提取id

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; } 注意:我个人反对使用动态,因为这样会失去编译时类型安全性

我有以下json字符串。使用c#从中提取id的最佳方法是什么

开发人员时间最便宜的方法是使用C#
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 );