2017-04-23 114 views
-1

嗨在下面的代碼中,我嘗試使用C#動態創建json並將json對象作爲客戶端傳遞。我不能夠得到確切的JSON格式,根據下面的靜態JSON.Can你請幫我解決這個問題。我的目標是使用C#獲取JSON格式。使用C#創建json格式

精確JSON格式:

{ 
    "chart": { 
     "caption": "Quarterly Sales vs. Profit % in Last Year", 
     "subcaption": "Product-wise Break-up - Harry's SuperMart", 
     "xAxisName": "Quarter", 
     "pYAxisName": "Sales", 
     "sYAxisName": "Profit %", 
     "numberPrefix": "$", 
     "numbersuffix": "M", 
     "sNumberSuffix": "%", 
     "sYAxisMaxValue": "25", 
     "paletteColors": "#5598c3,#2785c3,#31cc77,#1aaf5d,#f45b00", 
     "baseFontColor": "#333333", 
     "baseFont": "Helvetica Neue,Arial", 
     "captionFontSize": "14", 
     "subcaptionFontSize": "14", 
     "subcaptionFontBold": "0", 
     "showBorder": "0", 
     "bgColor": "#ffffff", 
     "showShadow": "0", 
     "canvasBgColor": "#ffffff", 
     "canvasBorderAlpha": "0", 
     "divlineAlpha": "100", 
     "divlineColor": "#999999", 
     "divlineThickness": "1", 
     "divLineDashed": "1", 
     "divLineDashLen": "1", 
     "usePlotGradientColor": "0", 
     "showplotborder": "0", 
     "valueFontColor": "#ffffff", 
     "placeValuesInside": "1", 
     "showXAxisLine": "1", 
     "xAxisLineThickness": "1", 
     "xAxisLineColor": "#999999", 
     "showAlternateHGridColor": "0", 
     "legendBgAlpha": "0", 
     "legendBorderAlpha": "0", 
     "legendShadow": "0", 
     "legendItemFontSize": "10", 
     "legendItemFontColor": "#666666" 
    }, 
    "categories": [ 
     { 
      "category": [ 
       { 
        "label": "Q1" 
       } 
      ] 
     } 
    ], 
    "dataset": [ 
     { 
      "dataset": [ 
       { 
        "seriesname": "Processed Food", 
        "data": [ 
         { 
          "value": "30" 
         } 
        ] 
       }, 
       { 
        "seriesname": "Un-Processed Food", 
        "data": [ 
         { 
          "value": "21" 
         } 
        ] 
       } 
      ] 
     }, 
     { 
      "dataset": [ 
       { 
        "seriesname": "Electronics", 
        "data": [ 
         { 
          "value": "27" 
         } 
        ] 
       }, 
       { 
        "seriesname": "Apparels", 
        "data": [ 
         { 
          "value": "17" 
         } 
        ] 
       } 
      ] 
     } 
    ], 
    "lineset": [ 
     { 
      "seriesname": "Profit %", 
      "showValues": "0", 
      "data": [ 
       { 
        "value": "14" 
       } 
      ] 
     } 
    ] 
} 

C#:

object[,] arrData = new object[2, 3]; 


      arrData[0, 0] = "Product A"; 

      arrData[0, 1] = 567500; 

      arrData[0, 2] = 567500; 

      StringBuilder jsonData = new StringBuilder(); 

       StringBuilder categories = new StringBuilder(); 

      StringBuilder currentYear = new StringBuilder(); 

      StringBuilder lineset = new StringBuilder(); 


      jsonData.Append("{" + 

     //Initialize the chart object with the chart-level attributes.. 
       "'chart': {"+ 

        "'caption': 'Sales by Product'," + 
        "'numberPrefix': '$',"+ 
        "'formatNumberScale': '1'," + 
        "'placeValuesInside': '1'," + 
        "'decimals': '0'" + 
       "},"); 


      categories.Append("'categories': [" + 
       "{" + 
        "'category': ["); 



      currentYear.Append("{" + 

         "'seriesname': 'Current Year'," + 
         "'data': ["); 

      lineset.Append("'lineset': [" + 
      "{" 
      ); 

      lineset.Append("{" + 

        "'seriesname': 'Current Year'," + 
        "'seriesname': 'Current Year'," + 
        "'data': ["); 
      for (int i = 0; i < arrData.GetLength(0); i++) 
      { 
       if (i > 0) 
       { 
        categories.Append(","); 
        currentYear.Append(","); 

       } 
       categories.AppendFormat("{{" + 

         "'label': '{0}'" + 
        "}}", arrData[i, 0]); 
       currentYear.AppendFormat("{{" + 

         "'value': '{0}'" + 
        "}}", arrData[i, 1]); 

       lineset.AppendFormat("{{" + 
        // data level attributes 
        "'value': '{0}'" + 
       "}}", arrData[i, 2]); 

      } 


      categories.Append("]" + 
        "}" + 
       "],"); 



      currentYear.Append("]" + 
        "}"); 

      jsonData.Append(categories.ToString()); 
      jsonData.Append("'dataset': [{"); 
      jsonData.Append("'dataset': ["); 
      jsonData.Append(currentYear.ToString()); 

      jsonData.Append("]" + 
        "}"); 
      jsonData.Append(lineset.ToString()); 
      jsonData.Append("}" + 
       "]"); 


      return jsonData.ToString(); 
+0

提供最小可重現的例子。 –

+5

使用諸如https://www.nuget.org/packages/newtonsoft.json/的Json庫來創建它。比使用字符串操作更可靠。 – Chris

+0

@JeroenHeier查看我的編輯 – Santhosh

回答

3

使用我的回答here創建從JSON C#類。然後創建一個類的實例,並用這樣的數據填充它:

var data = new WhateverYourClass(); 
// fill the properties 

然後使用NewtonSoft NuGet包和這樣做是爲了把你的類實例成JSON(序列化):

string json = JsonConvert.SerializeObject(data);