Newtonsoft.json: DeserializeObject๋Š” Enumerable.Empty๋กœ ์ดˆ๊ธฐํ™”๋œ ์ปฌ๋ ‰์…˜์˜ .NET Core 3์—์„œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 10์›” 15์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: JamesNK/Newtonsoft.Json

Enumerable.Empty ๋กœ ์ดˆ๊ธฐํ™”๋œ ์ปฌ๋ ‰์…˜์ด ์žˆ์œผ๋ฉด DeserializeObject ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Unhandled exception. Newtonsoft.Json.JsonSerializationException: Cannot create and populate list type System.Linq.EmptyPartition`1[System.String]. Path 'Values', line 1, position 11.

์ดˆ๊ธฐํ™”๋ฅผ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด(์˜ˆ: new List<string>() ) ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด์ „ ๋ฒ„์ „์˜ .NET์—์„œ ์ž‘๋™ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ .NET Core 3์—์„œ ์‹คํŒจํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ „์ฒด ์ €์žฅ์†Œ:

namespace ConsoleApp1
{
    public class Foo
    {
        public IEnumerable<string> Values { get; set; } = Enumerable.Empty<string>();
    }

    class Program
    {
        static void Main(string[] args)
        {
            var f1 = new Foo { Values = new[] { "apple", "banana", "carrot" } };
            var json = JsonConvert.SerializeObject(f1);
            Console.WriteLine(json);

            var f2 = JsonConvert.DeserializeObject<Foo>(json);
            Console.WriteLine(f2.Values.Count());
        }
    }
}

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์šฐ๋ฆฌ๋Š” ํ…Œ์ŠคํŠธํ–ˆ๊ณ  ํŒจ์น˜์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋‹ค์Œ ์งˆ๋ฌธ์€ ์ถœ์‹œ๋ฅผ ์–ด๋–ป๊ฒŒ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ? .NET Core 3๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๋ง๊ฐ€๋œจ๋ฆฐ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•˜๋ฉด ์ค‘์š”ํ•œ ํŒจ์น˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”.

๋ชจ๋“  4 ๋Œ“๊ธ€

๋‚˜๋Š” ์ด๊ฒƒ์ด https://www.nuget.org/packages/Newtonsoft.Json/12.0.3-beta2 ์—์„œ ์ˆ˜์ •๋˜์—ˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ…Œ์ŠคํŠธํ–ˆ๊ณ  ํŒจ์น˜์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋‹ค์Œ ์งˆ๋ฌธ์€ ์ถœ์‹œ๋ฅผ ์–ด๋–ป๊ฒŒ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ? .NET Core 3๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๋ง๊ฐ€๋œจ๋ฆฐ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•˜๋ฉด ์ค‘์š”ํ•œ ํŒจ์น˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”.

๋ชจ๋“  ์—…๋ฐ์ดํŠธ? ์ด์ •ํ‘œ๊ฐ€ ๋ณด์ด์ง€ ์•Š์•„ ๊ณ„ํš์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ฌธ์ œ ์ธ ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ์œ„์˜ re์™€ ๋™์ผํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ. ์šฐ๋ฆฌ ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” Json.NET ๊ธฐ๋Šฅ์„ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ System.Text.Json์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๋งค๋ ฅ์ ์ธ ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰