2014-02-27 77 views
0

我有我的MS SQL數據在json中。我爲此使用了Newtonsoft.Json。 我的JSON我使用這個;Highcharts,Newtonsoft.Json和ASP.NET

> Dim json As String = JsonConvert.SerializeObject(dt, New 
> Newtonsoft.Json.Formatting()) 

我的json看起來像這樣;

> {"Id":16846,"AXA":2.2090,"BXB":2.2270,"HMS":"08:17:05"}, 
{"Id":16847,"AXA":2.2091,"BXB":2.2271,"HMS":"08:17:21"}, 
{"Id":16848,"AXA":2.2087,"BXB":2.2271,"HMS":"08:18:02"}, 
{"Id":16852,"AXA":2.2090,"BXB":2.2270,"HMS":"08:42:00"}, 

在asp.net aspx頁面我想分類:將時間顯示爲此;

8時17分05秒,8點17分21秒,8點18分02秒,8時42分零零秒等......

而且我想我的2系列是這樣的;

>  series: [{ 
>    name: 'BUY', 
>    data: [2.2090, 2.2091, 2.2087, 2.2090] 
>      }, { 
>    name: 'SELL', 
>    data: [2.2270, 2.2271, 2.2271, 2.2270] 
>  }] 

我的問題是如何將數據放入類別來顯示時間以及如何將數據放入兩個系列。我很難將數據發送到aspx部分。

我找到了這段代碼,但我不知道如何將我的傑森應用於我想要的格式。

>  dLen = json.length, 
>  ret = []; 
>  for (var i = 0; i < dLen; i++) { 
>   ret.push(parseInt(d[i].x, 10));} 

我感謝您閱讀我的文章,我希望我可以得到一些詳細信息,以便我們可以動態地建立我的第一個asp.net highchart。

親切的問候,

謝謝梅森。我不確定我是否正確,但我創建了我的序列化爲;

Imports Microsoft.VisualBasic 
Imports System.Runtime.Serialization 

Public Class SerializedJsonDT 
    Private mstrLine As String 

    '{"Id":16846,"AXA":2.2090,"BXB":2.2270,"HMS":"08:17:05"} 
    'This was my json output. And I will change the output with 
    'this Serialization prosses. Then I will pass this class to json. 

    <DataContract> _ 
    Public Class [MyClass] 

     'CURRENCY: BUY Data 
     <DataMember> _ 
     Public Property WillSerializeKurBuy() As Decimal 
      Get 
       Return m_WillSerializeKurBuy 
      End Get 
      Set(value As Decimal) 
       m_WillSerializeKurBuy = value 
      End Set 
     End Property 
     Private m_WillSerializeKurBuy As Decimal 

     'CURRENCY: SELL Data 
     <DataMember> _ 
     Public Property WillSerializeKurSell() As Decimal 
      Get 
       Return m_WillSerializeKurSell 
      End Get 
      Set(value As Decimal) 
       m_WillSerializeKurSell = value 
      End Set 
     End Property 
     Private m_WillSerializeKurSell As Decimal 

     'CURRENCY: TIME Categories 
     <DataMember> _ 
     Public Property WillSerializeKurTarih() As String 
      Get 
       Return m_WillSerializeKurTarih 
      End Get 
      Set(value As String) 
       m_WillSerializeKurTarih = value 
      End Set 
     End Property 
     Private m_WillSerializeKurTarih As String 

    End Class 

End Class 

現在你提到我將創建在服務器端的功能,但我不知道如何從函數發送DT(數據表)這一類。我感謝你的迴應,並向我展示了一個正確的方向。我想我正在一步一步地實現目標。我希望你能向我展示或指引我更多的方向。我需要更多的幫助。 :)

親切的問候,

+0

如何創建一個服務器端類,該類在序列化時將匹配所需的JSON輸出。然後創建一個從'dt'到你的新類的函數。然後將新類轉換爲JSON併發送給客戶端? – mason

+0

謝謝梅森。如你所述,我創建了我的班級。但是如何在我的函數中使用這個類。我還沒有創建任何功能。我在上面發佈我的課程。你能告訴我我正朝着正確的方向嗎?我正在一步一步的幫助你。 – NTMS

回答

0

這是在C#中,因爲我不熟悉VB.NET 。但是如果你願意,你可以自動翻譯代碼。

public class MyJsonFriendlyClass() 
{ 
    public string name {get;set;} 
    public List<int> data {get;set;} 

    public MyJsonFriendlyClass() 
    { 
     data=new List<int>(); 
    } 

    public static List<MyJsonFriendlyClass> GetJsonFriendlyClasses(DataTable dt) 
    { 
     List<MyJsonFriendlyClass> returndata=new List<MyJsonFriendlyClass>(); 
     MyJsonFriendlyClass buy=new MyJsonFriendlyClass(); 
     buy.name="BUY"; 
     MyJsonFriendlyClass sell=new MyJsonFriendlyClass(); 
     sell.name="SELL"; 
     foreach(DataRow dr in dt) 
     { 
      buy.data.Add(dr["AXA"]);//you may have to convert based on data type of your column 
      sell.data.Add(dr["BXB"]); 
     } 
     returndata.Add(buy); 
     returndata.Add(sell); 
     return returndata;  
    } 
} 

使用

List<MyJsonFriendlyClass> classes=GetJsonFriendlyClasses(dt); 
string json = JsonConvert.SerializeObject(classes); 

我們正在做的是創建一個類,當序列化JSON,將匹配您要使用最終的數據結構。然後我們從dt(我認爲這是一個DataTable)到我們新的類的列表。我們對結果列表進行序列化,然後從那裏假設您將它返回給客戶端以便在JavaScript中進行處理。

+0

嗨,梅森,再次感謝你。您嘗試將(在線)C#轉換爲VB,並且您的代碼出現了一些錯誤。列表。我玩它並找到>缺失。我糾正了一個轉換後的VB。我改變了我的班級,現在我正在使用你的班級。現在我只用於[] json的用法。我會重新寫你的類和用法作爲vb.net,你能幫我爲什麼我只得到[]。 – NTMS

+0

抱歉,缺少角度的支架,我已經更新了答案。返回空集合的原因是我實際上沒有編寫將從DataTable轉換爲List 的代碼,我認爲你可以處理這一點。從您的問題中不清楚您是如何將每個DataRow分類爲BUY和SELL類別的。 – mason

+0

對不起梅森,我在閱讀你的答案之前先打字。買入是AXA,賣出是BXB。分類將是HMS。我無法處理一點,因爲我是序列化爲json的新手。我認爲使用高圖很容易,但不是。需要很好的工作和幫助。我非常感謝你的迴應。我會再次檢查它今晚的代碼。 – NTMS

0

可以以這種方式解析您的JSON

var categories = [], 
    series = [ 
     { 
      name: "BUY", 
      data: [] 
     },{ 
      name: "SELL", 
      data: [] 
     } 
    ]; 

var json = [{ 
    "Id": 16846, 
    "AXA": 2.2090, 
    "BXB": 2.2270, 
    "HMS": "08:17:05" 
}, { 
    "Id": 16847, 
    "AXA": 2.2091, 
    "BXB": 2.2271, 
    "HMS": "08:17:21" 
}, { 
    "Id": 16848, 
    "AXA": 2.2087, 
    "BXB": 2.2271, 
    "HMS": "08:18:02" 
}, { 
    "Id": 16852, 
    "AXA": 2.2090, 
    "BXB": 2.2270, 
    "HMS": "08:42:00" 
}]; 

$.each(json, function (i, p){ 
    series[0].data.push(p.AXA); 
    series[0].data.push(p.BXB); 
    categories.push(p.HMS); 
}); 

例子:http://jsfiddle.net/RJ9Bq/

+0

嗨塞巴斯蒂安,謝謝你的帖子,我試了一下,但沒有奏效。 – NTMS