2016-11-04 3 views
0

형식 C 번호와 JSON 파일 만들기 :나는 다음과 같은 형식으로 JSON 파일을 생성 할 필요가

을 :

"Result": [ 
     [ "Date", "Name", "Address", "Age" ], 
     [ "MMDDYYYY", "Name1", "Add1", "15" ], 
     [ "MMDDYYYY", "Name2", "Add2", "20" ] 

[결과의 데이터 것은 다음과 같은 DataTable에서 가득 List<string>에 의해 작성되는 List<JArray>입니다

var jArrayList = new List<JArray>(); 
var rowData = new List<string>(); 
for (int i = 0; i < table.Rows.Count; i++) 
{ 
    var rowData = new List<string>(table.Columns.Count); 
    DataRow dataRow = table.Rows[i]; 

    foreach (DataColumn dataColumn in table.Columns) 
    { 
     if (i > 0) 
     { 
     rowData.Add(dataRow[dataColumn].ToString()); 
     } 
    } 

    if (rowData.Any()) 
    { 
     jArrayList.Add(new JArray(rowData)); 
    } 
} 

if (jArrayList.Any()) 
{ 
    var jobj = new JObject(new JProperty("Result", 
          from p in jArrayList 
          select p)); 
    jObjList.Add(jobj); 
    } 

    var outputJson = new JObject(new JProperty("Entries", 
             from p in jObjList 
             select p)); 
    var outputString = outputJson.ToString(); 

나는 새로운 라인의 모든 기록하고이 코드를 실행하면 :

"Result": [ 
    [ 
     "Date", 
     "Name", 
     "Address", 
     "Age" 
    ], 
    [ 
     "MMDDYYYY", 
     "Name1", 
     "Add1", 
     "15" 
    ], 
    [ 
     "MMDDYYYY", 
     "Name2", 
     "Add2", 
     "20" 
    ], 

이렇게 작성하려면 어떻게 포맷해야합니까? 여기

"Result": [ 
    [ "Date", "Name", "Address", "Age" ], 
    [ "MMDDYYYY", "Name1", "Add1", "15" ], 
    [ "MMDDYYYY", "Name2", "Add2", "20" ] 
+0

아마 무지한 질문에 대해 미안하지만 왜이 정확한 형식으로 만들어야합니까? – mybirthname

+0

@mybirthname 매우 큰 데이터를 가지기 때문에. 따라서 새로운 라인에서는 더 많은 크기와 읽을 수 없습니다. –

+0

어쨌든 사용자에게 낮은 수준의 형식을 표시해서는 안됩니다. JSON은 사용자가 볼 수있는 것이 아니며 UI 용입니다. – toadflakz

답변

1

는 :

string json = "\"Result\": [\r\n [\r\n  \"Date\",\r\n  \"Name\",\r\n  \"Address\",\r\n  \"Age\"\r\n ],\r\n [\r\n  \"MMDDYYYY\",\r\n  \"Name1\",\r\n  \"Add1\",\r\n  \"15\"\r\n ],\r\n [\r\n  \"MMDDYYYY\",\r\n  \"Name2\",\r\n  \"Add2\",\r\n  \"20\"\r\n ],"; 
      var withoutEnter = json.Replace(Environment.NewLine, ""); 
      var splited = withoutEnter.Split('['); 
      var formattedJson = splited[0]; 
      for (int i = 1; i < splited.Length; i++) 
      { 
       formattedJson = formattedJson + "[" + splited[i] + "\n"; 
      } 

나는 다시 각 그룹에 대해 입력 추가 복사 붙여 넣기하여 JSON 샘플을 가지고 있고 그것은 모두 입력 제거하는 구문 분석. 지저분한 코드에 대해 미안하다 :)

+0

당신의 해결책은 제거하고 있습니다 **'['** ** –

+0

@Dark_Knight right! 지금 시도하십시오. – meJustAndrew

+0

글쎄, 나에게 아이디어를 주셨다.하지만 Split() 대신에 Replace()를 쓰겠다. 'Json.ToString (Formatting.None)'과'for' 루프는 필요 없다. 감사합니다. 너 –

관련 문제