Json数组到C#类

icnyk63a  于 2022-11-19  发布在  C#
关注(0)|答案(2)|浏览(203)

我有一个非常简单的场景,我有一个api响应,它只返回一个字符串数组。

[‘test’,’test2’,’test3’]

我需要反序列化为一个对象,以与一些当前代码集成。
我尝试过使用一个带有List类型的单一属性的直接类,但没有成功。
如何反序列化为单个对象?

epggiuax

epggiuax1#

如果您使用的是Visual Studio,您可以尝试使用“编辑”菜单下的“选择性粘贴-将JSON粘贴为类”。否则您可以使用这个简单的工具https://json2csharp.com/
对于反序列化json字符串,可以使用这两种扩展方法:

using System.Runtime.Serialization.Json;
     public static T DeserializeFromJsonString<T>(this string data)
        {
            using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(data)))
                return stream.DeserializeFromJsonStream<T>();
        }
        public static T DeserializeFromJsonStream<T>(this Stream stream)
        {
            T result = (T)new DataContractJsonSerializer(typeof(T)).ReadObject(stream);
            return result;
        }
xnifntxz

xnifntxz2#

如果需要将api outPut反序列化为单个对象:

class _object
    {
        public List<string> value { get; set; }
        public _object(List<string> val)=>
            value = val;
    }

     string[] apiOutput =  { "test", "test2", "test3" };
     _object myobject = new _object(apiOutput.ToList());

如果要将数组转换为对象列表:

class _object
    {
        public string value { get; set; }
        public _object(string val)=>
            value = val;
    }

    string[] apiOutput = {"test", "test2", "test3"};
    List<_object> listObjest = apiOutput.Select(x => new _object(x)).ToList();
    listObjest.ForEach(x=>Console.WriteLine(x.value));

相关问题