【问题标题】:Get value of Nested JSON objects according to certain value (C#)根据特定值获取嵌套 JSON 对象的值(C#)
【发布时间】:2017-07-11 12:57:00
【问题描述】:

我正在制作一个测试 Xamarin Android 应用程序,它需要我解析 JSON 数据。解析简单的 JSON 数据很容易,但是这个 JSON 数据似乎有点太复杂而难以理解。

我想做什么:

基于LatitudeLongitude,我想提取特定的JSON 对象。

这是数据:https://pastebin.com/raw/7QDh2uZH

到目前为止我所拥有的:

private async Task JsonFetcher()
{
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("https://pastebin.com");

        var result = await client.GetAsync("/raw/7QDh2uZH");
        string resultContent = await result.Content.ReadAsStringAsync();

        try
        {
            dynamic obj2 = Newtonsoft.Json.Linq.JObject.Parse(resultContent);
        }
        catch (Exception GettingError)
        {
            throw;
        }
    }
}

我现在拥有的只是对 JSON 数据进行反序列化,我可以通过以下方式访问一条记录的值:obj2.meta(将给出元的值)。

如何提取特定记录?任何想法或建议都会很棒。

【问题讨论】:

  • 使用 org2.data[0] 访问数据数组的第一个元素等...或将 json 反序列化为结构化的 c# 类

标签: c# android json xamarin xamarin.android


【解决方案1】:

您必须针对您的特定目的进行优化,但如果您只是想找到具有您正在寻找的纬度和经度的节点,那么这就可以解决问题。

for( int x = 0; x < obj2.data.Count; x++)
{
   var y = obj2.data[x].Location.Latitude;
   var z = obj2.data[x].Location.Longitude;
   if (y.Value == desiredLat && z.Value == desiredLong)
   {
       return obj2.data[x];
   }
}

【讨论】:

  • 您还可以基于 JSON 结构创建一个类,并将 JSON 反序列化为该类。然后你可以像对待任何其他 c# 对象一样对待它。这实际上是更可取的方法。像这样:JsonConvert.DeserializeObject(jsonString);
  • 啊,一旦您知道如何遍历 JSON 节点,这将相当容易。谢谢你的朋友,这是一个救生员,谢谢你的建议:)
猜你喜欢
  • 2020-03-07
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多