gpt4 book ai didi

c# - JSON.net SelectToken 格式化

转载 作者:数据小太阳 更新时间:2023-10-29 02:39:52 26 4
gpt4 key购买 nike

我有以下 xml :-

<AgentBookingStatusResponse>
<Eta>2012-11-19T15:40:15.0819269+00:00</Eta>
</AgentBookingStatusResponse>

我将其读入 JObject,然后使用以下代码将其转换为字符串:

 var jsonString = JsonConvert.SerializeObject(_document);

var jsonResponse = JObject.Parse(jsonString);

var eta = (string) jsonResponse.SelectToken("AgentBookingStatusResponse.Eta") ?? null;

我遇到的问题是,执行此操作时会发生一些隐式格式设置,因为 eta 的值为:11/19/2012 15:40:15

我想保留与 XML 中相同的格式。

我如何完成此操作,如果我想将格式更改为英国时间,我该怎么做?

最佳答案

使用 Newtonsoft 的 JSON.NET 中的 JsonConvert 类执行以下操作。要获取 JSON 格式的数据,您可以使用 RootClass 作为模板将其反序列化 为对象。

最后执行 CultureInfo.GetCultureInfo("en-GB") 以获取英国的日期格式然后显示它或执行任何您想要的操作。

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
using System.Xml;
using Newtonsoft.Json;

namespace ConsoleApplication1
{
public class AgentBookingStatusResponse
{
public DateTime Eta { get; set; }
}

public class RootData
{
public AgentBookingStatusResponse AgentBookingStatusResponse { get; set; }
}

public class Program
{

static void Main(string[] args)
{
string testXMLData = @"<AgentBookingStatusResponse><Eta>2012-11-19T15:40:15.0819269+00:00</Eta></AgentBookingStatusResponse>";

XmlDocument doc = new XmlDocument();
doc.LoadXml(testXMLData);
string jsonText = JsonConvert.SerializeXmlNode(doc);

//Deserialize to RootData Object
var dataObj = JsonConvert.DeserializeObject<RootData>(jsonText);

var datetime = new DateTime();
datetime = Convert.ToDateTime(dataObj.AgentBookingStatusResponse.Eta);
CultureInfo uk = CultureInfo.GetCultureInfo("en-GB");
string ukDate = datetime.ToString("O", uk);

Console.WriteLine(ukDate);
Console.ReadKey();
}
}
}

jsonText 输出:

{
"AgentBookingStatusResponse": {
"Eta": "2012-11-19T15:40:15.0819269+00:00"
}
}

ukDate 输出:

2012-11-19T10:40:15.0819269-05:00

更新

我们也可以通过使用 Newtonsoft JSON.NET 中的 JObject 来创建 RootClass。

在这种情况下,我们首先使用 JsonConvert.SerializeXMLNode() 将 XML 转换为 JSON,然后我们可以像这样使用 JObject.Parse()

  string testXMLData = @"<AgentBookingStatusResponse><Eta>2012-11-19T15:40:15.0819269+00:00</Eta></AgentBookingStatusResponse>";  

//First we convert this XML to JSON
var doc = new XmlDocument();
doc.LoadXml(testXMLData);
string jsonText = JsonConvert.SerializeXmlNode(doc);

//Then we use JObject to parse the converted JSON data to an Object
JObject jsonDataObj = JObject.Parse(jsonText);

//Grab Token "Eta" and convert to DateTime Object
var dateTimeToken = Convert.ToDateTime(jsonDataObj.SelectToken("AgentBookingStatusResponse.Eta"));

//DateTime Object to a string with UK Culture information and proper Formatting
var ukDateTime = dateTimeToken.ToString("O", CultureInfo.GetCultureInfo("en-GB"));

ukDateTime 输出:

2012-11-19T10:40:15.0819269-05:00

可以找到文档Here .

关于c# - JSON.net SelectToken 格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32762743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com