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());
}
}
}
๋๋ ์ด๊ฒ์ด https://www.nuget.org/packages/Newtonsoft.Json/12.0.3-beta2 ์์ ์์ ๋์๋ค๊ณ ๋ฏฟ์ต๋๋ค.
์ฐ๋ฆฌ๋ ํ ์คํธํ๊ณ ํจ์น์ ํจ๊ป ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌผ๋ก ๋ค์ ์ง๋ฌธ์ ์ถ์๋ฅผ ์ด๋ป๊ฒ ์์ํ์ญ๋๊น? .NET Core 3๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ๋์ ๋ง๊ฐ๋จ๋ฆฐ๋ค๋ ์ ์ ๊ฐ์ํ๋ฉด ์ค์ํ ํจ์น์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ฌ ํด์.
๋ชจ๋ ์ ๋ฐ์ดํธ? ์ด์ ํ๊ฐ ๋ณด์ด์ง ์์ ๊ณํ์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ์ฌ์ ํ โโ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ผ๋ฏ๋ก ์์ re์ ๋์ผํ ์ง๋ฌธ์ ๋๋ค. ์ ๋ฐ์ดํธ. ์ฐ๋ฆฌ ์ฝ๋๋ฒ ์ด์ค๋ Json.NET ๊ธฐ๋ฅ์ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ๋ฏ๋ก System.Text.Json์ผ๋ก ์ ํํ๋ ๊ฒ์ ๋งค๋ ฅ์ ์ธ ์ต์ ์ด ์๋๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฐ๋ฆฌ๋ ํ ์คํธํ๊ณ ํจ์น์ ํจ๊ป ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌผ๋ก ๋ค์ ์ง๋ฌธ์ ์ถ์๋ฅผ ์ด๋ป๊ฒ ์์ํ์ญ๋๊น? .NET Core 3๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ๋์ ๋ง๊ฐ๋จ๋ฆฐ๋ค๋ ์ ์ ๊ฐ์ํ๋ฉด ์ค์ํ ํจ์น์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ฌ ํด์.