• R/O
  • HTTP
  • SSH
  • HTTPS

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

File Info

Rev. c3a256ccb4a9a5823695d2237d31680b12931560
Größe 1,541 Bytes
Zeit 2022-11-29 23:54:33
Autor yoshy
Log Message

[MOD] キャプション書式化機能でキャプションの取得と書式化を行う機能の区別を明確にした

Content

using NLog;
using System.Text.Json;

namespace CleanAuLait.Core.Converter
{
#if false
    /// <see href="https://mokake.hatenablog.com/entry/2017/09/12/195656">
    public static class JsonHelper
    {
        public static string ToJsonString<T>(this T data)
        {
            using var stream = new MemoryStream();
            var serializer = new DataContractJsonSerializer(typeof(T));
            serializer.WriteObject(stream, data);
            return Encoding.UTF8.GetString(stream.ToArray());
        }

        public static T DeserializeJson<T>(this string json)
        {
            using var stream = new MemoryStream(Encoding.UTF8.GetBytes(json));
            var serializer = new DataContractJsonSerializer(typeof(T));
            return (T)serializer.ReadObject(stream);
        }
    }
#else
    public static class JsonHelper
    {
        private static readonly ILogger logger = LogManager.GetCurrentClassLogger();

        public static string ToJsonString<T>(this T data)
        {
            return JsonSerializer.Serialize(data);
        }

        public static T DeserializeJson<T>(this string json)
        {
            T obj = default;

            try
            {
                if (!string.IsNullOrEmpty(json))
                {
                    obj = JsonSerializer.Deserialize<T>(json);
                }
            }
            catch (Exception e)
            {
                logger.Error(e, "json deserialization failed.");
            }

            return obj;
        }
    }
#endif
}