2017-03-27 1 views
1

jsonproperty가 serialize 될 때 무시됩니다. 동일한 코드가 콘솔 응용 프로그램에서 작동합니다. 그러나 Microsoft Office 추가 기능을 개발할 때 동일한 코드를 사용하면이 문제가 발생합니다.Office Addin에 대해 Serialized 할 때 JsonProperty가 무시됩니다.

예상 결과 : { "JQL": "UPDATED DESC BY 테스트 ORDER", "startAt"0 "에서 maxResults"50, "필드"[]}

실제 결과 { "JQL" "UPDATED DESC BY 테스트 ORDER", "StartAt"0 "에서 maxResults": 50, "필드": []}

public class SearchRequest 
{ 

    [JsonProperty("jql")] 
    public string JQL { get; set; } 

    [JsonProperty("startAt")] 
    public int StartAt { get; set; } 

    [JsonProperty("maxResults")] 
    public int MaxResults { get; set; } 

    [JsonProperty("fields")] 
    public List<string> Fields { get; set; } 
    [JsonProperty("SearchRequest")] 
    public SearchRequest() 
    { 
     Fields = new List<string>(); 
    } 
} 

public void ViewCases_Load(object sender, EventArgs e) 
{ 
    SearchRequest request = new SearchRequest(); 
      request.JQL = "test ORDER BY UPDATED DESC"; 
      request.MaxResults = 50; 
      request.StartAt = 0; 
    string data = JsonConvert.SerializeObject(request); 
} 
+0

입니다 다른 serilaizer 따라서 그것은 예상대로 동작합니다. –

답변

0

당신은 예상대로 정확히 같은 결과를 달성하기 위해 다음을 수행해야합니다

  1. Json 시리얼 라이저와 설정이 연결되어 있는지 확인하십시오. 직렬화를하고있는 동안 재산, 그것은 필요한 경우 Newtonsoft 같은 사용자 정의 직렬의 경우를
  2. 플러그를 유지하는 옵션을 가지고 JSON의 peroperties 무시하거나하지 여부를 확인하기 위해 관련 속성
에게

쉬운 방법을 설정합니다 속성을 [JsonProperty("jqlTest")]과 같이 변경하면 그 차이가 나타납니다. 또 다른 요점은 Json에서 Keys의 경우가 중요하며 대소 문자를 구별하지 않는다는 것입니다.

Json.Net에서

예상대로 사건을 변경하려면 DefaultContractResolver를 오버라이드 (override) 할 수 있습니다, 낙타 케이스는 콘솔에 당신은을 사용하여, 그 때문에 JSON에 사용하는 시리얼 라이저와 해당 설정의 무시 아니에요 표준 구현

관련 문제