【问题标题】:Get JSON element as string获取 JSON 元素作为字符串
【发布时间】:2022-01-06 12:36:07
【问题描述】:

我希望将 JSON 数组元素转换为字符串。

JSON 看起来像这样:

[
   {
      "id":373313181,
      "from":"no-reply@email.com",
      "subject":"example subject 123",
      "date":"2022-01-06 13:22:14"
   }
]

我想将 ID 元素作为字符串获取。

我试图这样做:

var json = "[{\"id\":373313181,\"from\":\"no-reply@email.com\",\"subject\":\"example subject 123\",\"date\":\"2022-01-06 13:22:14\"}]";
var parse = JObject.Parse(json);
var id = parse["id"].ToString();
Console.WriteLine(id);

这样输出会是这样的:

373313181

但这根本行不通。任何想法为什么?

【问题讨论】:

  • 您尝试这样做时发生了什么?您需要解析为数组,而不是单个对象。

标签: c# arrays json json.net


【解决方案1】:

解析为JArray 并取数组的第一个元素。

var json = "[{\"id\":373313181,\"from\":\"no-reply@email.com\",\"subject\":\"example subject 123\",\"date\":\"2022-01-06 13:22:14\"}]";
var array = JArray.Parse(json);
var id = (string)array[0]["id"];

根据您的问题,将 id 转换为string,如下所示:

var id = (string)array[0]["id"];

var id = array[0]["id"].Value<string>();

Sample Program

【讨论】:

  • 效果很好。但是当我这样做时:{\"id\":373335829,\"from\":\"no reply@email.com\",\"subject\":\"blabla\",\"date\":\"2022 - 01 - 0614:04:27\",\"attachments\":[],\"body\":\"blabla\",\"textBody\":\"blabla\",\"htmlBody\":\"\"} 它说 Current JsonReader item is not an array var id2 = array2[5]["body"].ToString();
  • 您的新 JSON 不是数组。 var obj= JObject.Parse(json); var body = obj["body"].ToString();
  • 嗨,如果这个答案解决了你的问题,请accept the answerya。谢谢。
【解决方案2】:

我的实现:

using System;
using Newtonsoft.Json;
        
public class Program
{
    public static void Main()
    {
        var json = "[{\"id\":373313181,\"from\":\"no-reply@email.com\",\"subject\":\"example subject 123\",\"date\":\"2022-01-06 13:22:14\"}]";
        dynamic test = JsonConvert.DeserializeObject(json);
        Console.WriteLine(Convert.ToString(test[0].id));
        Console.WriteLine(Convert.ToString(test[0].id).GetType());

    }
}

//Output
373313181
System.String

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多