簡體   English   中英

C#JSON字符串到JavaScript數組

[英]C# JSON string to JavaScript array

我在C#中有以下課程:

public class Caption
{
    public string line;
    public string timestamp;
}

我創建了一些Caption對象並將其添加到列表中:

List<Caption> CaptionList = new List<Caption>();
var obj = new Caption
{
  line = "Some text"
  timestamp = "00:10"
};
CaptionList.Add(obj);

然后,我使用Json.NET將列表序列化為Json,如下所示:

public string json = JsonConvert.SerializeObject(CaptionList);

現在,我想將此作為JavaScript數組使用,所以我嘗試了以下方法:

var arr = '<%=json%>';

我沒有太多的JavaScript知識,但是好像arr現在是一個字符串而不是一個數組,因為json實際上是C#字符串。 我嘗試使用arr[i].line等訪問對象,但這不起作用。

如何將json變成JavaScript中的實際數組?

您可以使用JSON.parse方法將JSON字符串解析為一個數組:

var arr = JSON.parse('<%=json%>');

但是,由於JSON是JavaScript語法的子集,因此您實際上可以將JSON用作JavaScript數組文字:

var arr = <%=json%>;

當作演示

您的變量arr將以這種方式呈現。 這將是字符串。 因此要將字符串轉換為JSON對象,您需要解析該字符串。 通過使用JSON.parse(arr)

var arr = '[ { "line":"Some text", "timestamp":"00:10" }, { "line":"Some text", "timestamp":"00:10" } ]';

var JObject= JSON.parse(arr);

Now you can access JObject[0].line

這會給你

“一些文字”

您可以在這里查看Mozilla

我們使用MVC,並且在我們想要將模型轉換為javascript對象的視圖中(通過模型),我們使用一條簡單的行:

<script type="text/javascript">
        $(document).ready(function () {
            MyObject.Initialize(@Html.Raw(Json.Encode(Model)));
        });
</script>

所有這些的關鍵是:

@Html.Raw(Json.Encode(Model))

MVC傳遞了“模型”,但是您可以很容易地執行以下操作:(Razor語法)

@{
   List<Caption> CaptionList = new List<Caption>();
   var obj = new Caption
   {
     line = "Some text"
     timestamp = "00:10"
   };
   CaptionList.Add(obj);
}

然后...

<script type="text/javascript">
        $(document).ready(function () {
            MyObject.Initialize(@Html.Raw(Json.Encode(CaptionList)));
        });
</script>

我尚未對此進行測試,但是它應該可以工作,或者它可以進行一些變型,您可能需要將“ CaptionList”作為屬性放入某個父對象中,並將其傳遞給Json.Encode。

您也可以這樣做:

<script type="text/javascript">
        $(document).ready(function () {
            var myArray = @Html.Raw(Json.Encode(CaptionList)));
        });
</script>

請注意,這里不需要jQuery,這只是將其包裝在ready函數中的一種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM