【问题标题】:Extract first element from JSON从 JSON 中提取第一个元素
【发布时间】:2018-06-11 09:36:17
【问题描述】:

我怎样才能只从 Json 中获取第一个元素?

//take result back
    void HandleIncomingMessage(object sender, PEventArgs e)
    {
        RetMessage += e.Result;
        //here can not deserialize correct
        var deserialized_message = JsonConvert.DeserializeObject<Message>(RetMessage);
    }

我在这里进行反序列化,但是因为它占用了整个对象,所以无法正确解析它。

我只需要 JSON。[0]

编辑:原始 Json :

 [{"unique_id":55,"action_name":"INSERT","start_date":"2018-06-11T16:00:00","end_date":"2018-06-11T17:00:00"},"1sddsd","my_channel"]

【问题讨论】:

  • JSON[0].....?
  • 显示原始 json...
  • 如果您发布原始 JSON 字符串而不是调试窗格的图像,这个问题将会大大改善。
  • 由于你的 json 是非结构化的,你需要使用动态解析,将其解析为 JArray,然后抓取第一个元素并将其反序列化为你的 Message 类型。
  • 这应该可以工作:JArray.Parse(json)[0].ToObject&lt;Message&gt;()

标签: c# json


【解决方案1】:

反序列化为List&lt;dynamic&gt;,然后读取其第一个元素的属性。

//using Newtonsoft.Json;
var input = @"[{""unique_id"":55,""action_name"":""INSERT"",""start_date"":""2018-06-11T16:00:00"",""end_date"":""2018-06-11T17:00:00""},""1sddsd"",""my_channel""]";
var output = JsonConvert.DeserializeObject<List<dynamic>>(input);
Console.WriteLine(output[0].unique_id);

输出:

55

DotNetFiddle

【讨论】:

  • 你是对的,这有助于我反序列化它。谢谢!
【解决方案2】:

如何获取json字符串并使用JSON.net

//first create object from json
JObject jObject = JObject.Parse(jsonString);
//read unique value        
string jUniqueId = jObject["unique_id"];
//or
string firstObject = jObject[0];

【讨论】:

  • 你的意思是JArray.Parse
  • 不,它是 JObject.ParseNewtonsoft.Json.Linq
【解决方案3】:

解决方案是静态的,

JObject obj= JObject.Parse(here pass the JSON);
  string id=  JSON[0]["unique_id"],
  string name=  JSON[0]["action_name"],
  string sdate=  JSON[0]["start_date"],
  string edate=  JSON[0]["end_date"]

动态意味着传递 i 而不是 0。

【讨论】:

  • 投反对票的原因:JSON 是什么? JSON 来自哪里?
  • 您现在遇到与 aditya 相同的问题。
猜你喜欢
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
相关资源
最近更新 更多