2014-04-25 10 views
0

필자가 작성중인 WebApi에 대해 일부 페이징을 구성하려고합니다.
모든 레코드의 합계를 JSON의 요청 표시 금액과 함께 반환해야합니다.JSON 데이터 구조 지원

편집

, 그래서 당신의 adivce의 onbaord을 복용, 난 내 개체를 확인 직렬화,하지만 난 STIL 블랙 슬래시를 얻을. 이 생성

"[ 
    { 
     \"RowNumber\": 1, 
     \"TotalRows\": 10, 
     \"TotalDisplayRows\": 10 
     \"Sender\": \"MNBLGB2L\" 
    }, 
    { 
     \"RowNumber\": 2, 
     \"TotalRows\": 10, 
     \"TotalDisplayRows\": 10 
    }, 
    { 
     \"RowNumber\": 3, 
     \"TotalRows\": 10, 
     \"TotalDisplayRows\": 10 

    }, 
    { 
     \"RowNumber\": 4, 
     \"TotalRows\": 10, 
     \"TotalDisplayRows\": 10 

    }, 
    { 
     \"RowNumber\": 5, 
     \"TotalRows\": 10, 
     \"TotalDisplayRows\": 10 
      } 
]" 

코드는 다음과 같습니다 자바 스크립트 시리얼을 모두 사용하여, 그래서

[Serializable] 
    public class Summary 
    { 
     public int RowNumber { get; set; } 
     public int TotalRows { get; set; } 
     public int TotalDisplayRows { get; set; } 
    } 

및 JSON 백 슬래시 생산 :

 List<Summary> results = MtFacade.GetSummary(query); 

      string jsonData = JsonConvert.SerializeObject(results); 

      return jsonData; 

요약 클래스입니다

screen grab within VS

*** 편집 ****

GetSummary는 데이터 영역에서 인터페이스 내 비즈니스 계층에 있습니다 :

List<Summary> GetSummary(string query); 

입니다 :

public static List<Summary> GetSummary(string query) 
     { 
      return MessageRepository.GetSummary(query); 
     } 

이 인터페이스입니다 dapper를 이용하여 데이터 플레이어에 사용 :

public List<Summary> GetSummary(string query) 
     { 
      using (var block = new TransactionBlock()) 
      { 
       var results = 
        TransactionBlock.Connection.Query<Summary>(query, transaction: TransactionBlock.Transaction) 
         .ToList(); 
       block.Commit(); 
       return results; 
      } 
     } 
+1

'StringBuilder'를 만들지 마십시오 ('sb'가 무엇인지 추측합니다). 대신, 필요한 필드가있는'PageTotals' 객체를 만든 다음 그것을 직렬화하십시오. – mason

+2

문자열을 직렬화하고 있습니다! 당신은 문자열을 직렬화하지 않습니다, ** ** 문자열을 객체로 직렬화합니다.객체를 문자열로 직렬화합니다. – Liam

+0

가능한 복제본 [C#으로 Json 파일을 작성하는 방법] (http://stackoverflow.com/questions/16921652/how-to-write-a-json-file-in-c) – Liam

답변

1

당신은 crea JSON을 ting하고 JSON으로 다시 직렬화합니다.

적어도 JSON 만 필요할 때가 좋지 않습니다. json으로 자신을 생성

  1. 유지 :

    당신은 두 가지 옵션이 있습니다.

  2. 개체를 만들고 JsonConvert을 사용하여 JSON으로 직렬화하십시오.
+1

@CSharpNewBee : 어떻게 그 텍스트를 가져 옵니까? Visual Studio 또는 실제 파일을 사용하고 있습니까? Visual Studio에서는 이스케이프 된 문자열을 보여줍니다. –

+0

그것은 똑같이 피들러에서 보여줍니다. 패트릭 – CSharpNewBee

3

자신이 직접 작성한을 작성하면 안됩니다. JSON.net에 개체를 전달하여 JSON.net이 작업을 수행하도록해야합니다.

유효성 검사는 수행자가 StringBuilder 인 것을 의미합니다.

필요한 속성을 가진 클래스를 생성하고 대신 그 직렬화, 데이터를 저장하기 위해 생성하는 클래스를

+0

upvoted, 나는 당신의 등을 맞습니다.이 유일한 대답은 – meda

1

.JsonConvert(myObj);를 사용하여 직렬화.

public class Summary 
{ 
    public int RowNumber {get; set;} 
    public int TotalRows {get; set;} 
    public int TotalDisplayRows {get; set;} 
} 

Summary pt=new Summary(); 
pt.TotalRecords=10; 
pt.TotalDisplayRecords=10; 
pt.RowNumber=1; 
string json=JsonConvert.SerializeObject(pt); 
+0

입니다. 당신이 맞다고 생각합니다. 그래서이 접근 방식을 사용하면 두 개의 객체를 하나의 JSON 문자열로 결합 할 수 있습니까? – CSharpNewBee

+0

편집보기 참조. 내 답변은 제안 된 답변의 뒤쪽에서 벗어났습니다. – CSharpNewBee