2016-11-04 2 views
0

Мне нужно создать файл в формате JSON в следующем формате:Создание JSON файла с Format C#

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

данных Результатом является List<JArray>, который заполняется List<string>, который заполняется из DataTable следующим образом:

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 не предназначен для просмотра пользователями - вот для чего нужны пользовательские интерфейсы! – 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' loop Thank вы –