DateTime的JSON字符串转正常日期

JSON日期格式转换技巧
本文详细介绍了如何在Java中处理和转换JSON中的日期格式,包括去除毫秒和时区偏移,通过示例代码展示了从JSON字符串转换为Java Date对象的方法,并使用SimpleDateFormat进行格式化。

例子

1.如:/Date(1587696591000+0800)/  (多了毫秒)

2.如:/Date(1587696591000)/

转换(Java)

        
        String time="/Date(1587696591000+0800)/";
        //情况二length()-7
        //情况一length()-2
        String newStr = time.substring(time.indexOf('(')+1,time.length()-7);
        Date date = new Date(Long.valueOf(newStr));
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String CorrectTime=formatter.format(date);

参考

android 转化json日期

陈器 2020.4.25

<think>我们使用System.Text.Json库在.NET MAUI中实现JSON字符串到对象实例的转换 步骤: 1. 定义与JSON结构匹配的C#类(数据模型) 2. 使用JsonSerializer.Deserialize方法进行反序列化 示例: 假设我们有如下JSON字符串(来自引用[4]): { "Image": { "Width": 800, "Height": 600, "Title": "View from 15th Floor", "Thumbnail": { "Url": "http://www.example.com/image/481989943", "Height": 125, "Width": "100" }, "IDs": [116, 943, 234, 38793] } } 步骤1:定义对应的C#类 注意:属性名称和类型需要与JSON匹配(可以使用JsonPropertyName特性指定不同的名称) 步骤2:反序列化 注意:在MAUI中,我们通常使用System.Text.Json,它是.NET Core自带的,无需额外安装包。 代码示例:</think>### 在 .NET MAUI 中将 JSON 字符串转换为对象实例的完整指南 #### 方法 1:使用 System.Text.Json(推荐) 这是 .NET 内置的高性能 JSON 库,无需额外依赖: ```csharp using System.Text.Json; // 定义与 JSON 结构匹配的数据模型类 public class Image { public int Width { get; set; } public int Height { get; set; } public string Title { get; set; } public Thumbnail Thumbnail { get; set; } public List<int> IDs { get; set; } } public class Thumbnail { public string Url { get; set; } public int Height { get; set; } public int Width { get; set; } } // 反序列化操作 public Image ParseJson(string jsonString) { // 使用引用[4]的JSON结构示例 var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true, // 忽略属性名大小写 AllowTrailingCommas = true // 允许末尾逗号 }; return JsonSerializer.Deserialize<Image>(jsonString, options); } ``` #### 方法 2:使用 Newtonsoft.Json(需要安装 NuGet 包) 如果需更复杂功能(如自定义转换器): ```csharp // 安装 NuGet 包:Newtonsoft.Json using Newtonsoft.Json; public Image ParseJsonWithNewtonsoft(string jsonString) { // 使用引用[4]的JSON结构示例 return JsonConvert.DeserializeObject<Image>(jsonString, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Error }); } ``` #### 完整工作示例 ```csharp // MAUI 页面代码示例 public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); ConvertJsonToObject(); } private void ConvertJsonToObject() { // 示例JSON(来自引用[4]) var json = @"{ ""Image"": { ""Width"": 800, ""Height"": 600, ""Title"": ""View from 15th Floor"", ""Thumbnail"": { ""Url"": ""http://www.example.com/image/481989943"", ""Height"": 125, ""Width"": ""100"" }, ""IDs"": [116, 943, 234, 38793] } }"; try { // 反序列化 var root = JsonSerializer.Deserialize<Root>(json); var image = root.Image; // 使用转换后的对象 Console.WriteLine($"标题: {image.Title}"); Console.WriteLine($"缩略图: {image.Thumbnail.Url}"); } catch (JsonException ex) { Console.WriteLine($"JSON解析错误: {ex.Message}"); } } } // 根对象包装类(根据JSON结构) public class Root { public Image Image { get; set; } } ``` ### 关键注意事项 1. **模型类匹配**: - 属性名需与 JSON 键名一致(或使用 `[JsonPropertyName("newName")]` 特性) - 集合类型使用 `List<T>` 或数组 `T[]` - 嵌套对象需定义对应的子类 2. **错误处理**: ```csharp try { // 反序列化代码 } catch (JsonException ex) { // 处理格式错误 } ``` 3. **自定义转换器**(处理特殊格式): ```csharp public class CustomConverter : JsonConverter<DateTime> { public override DateTime Read(ref Utf8JsonReader reader, ...) { return DateTime.ParseExact(reader.GetString(), "yyyy-MM-dd", null); } } // 使用: options.Converters.Add(new CustomConverter()); ``` 4. **性能优化**: - 重用 `JsonSerializerOptions` 实例 - 对于大型 JSON 使用 `JsonDocument` 进行流式处理 ### 常见问题解决 **Q:遇到 "The JSON value could not be converted" 错误?** A:检查模型类属性类型是否与 JSON 值类型匹配,特别是数字和字符串的混用 **Q:如何处理 JSON 中的 null 值?** ```csharp // System.Text.Json options.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; // Newtonsoft.Json settings.NullValueHandling = NullValueHandling.Ignore; ``` **Q:如何转换动态 JSON 结构?** 使用 `JsonDocument` 或 `JToken`(Newtonsoft.Json): ```csharp using JsonDocument doc = JsonDocument.Parse(json); var width = doc.RootElement .GetProperty("Image") .GetProperty("Width") .GetInt32(); ``` **Q:如何将对象JSON?** ```csharp // System.Text.Json string json = JsonSerializer.Serialize(imageObject); // Newtonsoft.Json string json = JsonConvert.SerializeObject(imageObject); ``` ### 相关问题 1. 如何处理 JSON 中的日期时间格式? 2. 如何优化大型 JSON 文件的解析性能? 3. 在 MAUI 中如何安全地处理来自 API 的 JSON 数据? 4. 如何为嵌套 JSON 结构设计 C# 数据模型? 5. 如何实现自定义 JSON 序列化/反序列化逻辑? > 最佳实践:对于新项目优先使用 `System.Text.Json`,需要复杂功能时考虑 `Newtonsoft.Json`。始终验证外部 JSON 数据的结构,避免因格式错误导致应用崩溃[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值