JSON.NET가 필요하지 않습니다 당신이 속성을 표시 할 수 있도록하는 좋은 방법이 - 당신은 할 수 DataContract
및 DataMember
속성을 사용하십시오.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using Newtonsoft.Json;
namespace ConsoleApplication1
{
[DataContract]
public class NamedIndividual
{
#region Fields
private string firstName;
private string middleInitial;
private string lastName;
#endregion
#region Properties
[DataMember(IsRequired = true)]
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
[DataMember(IsRequired = false)]
public string MiddleInitial
{
get { return middleInitial; }
set { middleInitial = value; }
}
[DataMember(IsRequired = true)]
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
#endregion
public NamedIndividual()
{
}
}
class Program
{
static void Main(string[] args)
{
string name = "{'FirstName':'David', 'MiddleInitial':'Q', 'LastName':'Hoerster'}";
string name1 = "{'FirstName':'David', 'LastName':'Hoerster'}";
var obj = JsonConvert.DeserializeObject<NamedIndividual>(name);
var obj1 = JsonConvert.DeserializeObject<NamedIndividual>(name1);
Console.WriteLine(obj.MiddleInitial);
Console.WriteLine("{0} {1} {2}",obj1.FirstName, obj1.MiddleInitial, obj1.LastName);
}
}
}
그래서, 내가 선택 속성으로 MiddleInitial
표시 - 그래서 내 JSON 문자열을 포함하거나 수 없습니다. 필요한 속성 (IsRequired=true
)을 표시하면 JSON 문자열의 속성이 더 좋거나 예외가 발생합니다.
업데이트 일부 속성을 필요 없게 만들려면 DataContract
속성을 사용해야한다고 암시했을 수 있습니다. JSON.net은 자체적 인 속성 세트를 가지고 있으며 아래의 @L.B. 주석과 함께 어떤 속성도 사용하지 않으면 아무 것도 필요없는 기본 동작을 제공합니다. 여기에 JsonObject
속성을 사용하는 간단한 예는 다음과 같습니다
는
[JsonObject(MemberSerialization=MemberSerialization.OptIn)]
public class NamedIndividual1
{
[JsonProperty(Required = Required.Always)]
public string FirstName { get; set; }
[JsonProperty(Required = Required.Default)]
public string MiddleInitial { get; set; }
[JsonProperty(Required = Required.Always)]
public string LastName { get; set; }
}
class Program
{
static void Main(string[] args)
{
string name2 = "{'FirstName':'David', 'LastName':'Hoerster'}";
var obj2 = JsonConvert.DeserializeObject<NamedIndividual>(name2);
Console.WriteLine("{0} {1} {2}", obj2.FirstName, obj2.MiddleInitial, obj2.LastName);
}
}
이 도움이
희망 (. 또한 옵션으로 모든 것을 어떤 속성을 사용할 수 있습니다)!
NamedIndividual이 선언 된 방법을 붙여 넣을 수 있습니다. – MethodMan
. 변경이 추가되었습니다. 빈 생성자의 내부에 – MrM
이 추가되었거나 찾고있는 속성을 설정할 수 있습니다. 그렇지 않은 경우에는 3 가지 속성이 모두 설정되는 것처럼 보입니다.이 작업은 의미가 있습니다. – MethodMan