>백엔드 개발 >C++ >JavascriptSerializer가 .NET에서 목록을 JSON으로 직렬화할 수 있나요?

JavascriptSerializer가 .NET에서 목록을 JSON으로 직렬화할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-11 06:53:42259검색

Can JavascriptSerializer Serialize Lists to JSON in .NET?

.NET의 JavascriptSerializer가 목록을 JSON으로 직렬화할 수 있나요?

객체 모델에 MyObjectInJson이 포함되어 있다고 가정해 보겠습니다. 이 속성 ObjectInJson은 중첩 목록의 직렬화된 버전을 저장합니다. 현재 다음과 같이 목록을 수동으로 직렬화하고 있습니다.

<code class="language-csharp">StringBuilder TheListBuilder = new StringBuilder();

TheListBuilder.Append("[");
int TheCounter = 0;

foreach (MyObjectInJson TheObject in TheList)
{
  TheCounter++;
  TheListBuilder.Append(TheObject.ObjectInJson);

  if (TheCounter != TheList.Count())
  {
    TheListBuilder.Append(",");
  }
}
TheListBuilder.Append("]");

return TheListBuilder.ToString();</code>

JavascriptSerializer 같은 결과를 얻을 수 있나요?

JavascriptSerializer의 대안

.NET 6.0 이상에서는 내장된 System.Text.Json 파서를 사용하는 것이 좋습니다. 다음과 같이 반영 없이 효율적으로 목록을 직렬화합니다.

<code class="language-csharp">using System.Text.Json;
using System.Text.Json.Serialization;

var aList = new List<myobjectinjson>
{
    new(1, "1"),
    new(2, "2")
};

var json = JsonSerializer.Serialize(aList, Context.Default.ListMyObjectInJson);
Console.WriteLine(json);

return;

public record MyObjectInJson
(
    long ObjectId,
    string ObjectInJson
);

[JsonSerializable(typeof(List<myobjectinjson>))]
internal partial class Context : JsonSerializerContext
{
}</code>

이전 .NET 버전(예: Core 2.2 이하)의 경우 Newtonsoft JSON.Net이 실행 가능한 대안입니다.

<code class="language-csharp">using Newtonsoft.Json;

var json = JsonConvert.SerializeObject(aList);</code>

필요한 경우 이 패키지 설치를 고려하세요. ​​

<code>PM> Install-Package Newtonsoft.Json</code>

쉽게 참조할 수 있도록 JavaScriptSerializer을 사용한 원래 방법을 제공합니다.

<code class="language-csharp">// 需要引用 System.Web.Extensions

using System.Web.Script.Serialization;

var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(aList);</code>

위 내용은 JavascriptSerializer가 .NET에서 목록을 JSON으로 직렬화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.