在.net 3.5 vb中使用JavaScriptSerializer进行序列化时,获取奇怪的大小会导致JSON

时间:2011-06-29 08:27:01

标签: asp.net json linq-to-sql serialization .net-3.5

问题很简单,在生成的json中我有时会得到这个:

{"success":true, "tests":[{"visningsNamn":"Test1","id":1},{"visningsNamn":"Test2","id":2}]}

有时我得到这个:

{"success":true, "tests":[{"Visningsnamn":"Test1","id":1},{"Visningsnamn":"Test2","id":2}]}

Visningsnamn参数不时得到不同的外壳。似乎是随机的,并且在获取数据的代码中没有进行任何更改,并且在问题发生的时间之间将其序列化:

 Dim tbl = From t In db.Guideinriktningars Order By t.Visningsnamn Ascending Select t.Visningsnamn, t.id

    If Not query = "" Then
      tbl = From t In tbl Where t.Visningsnamn.ToLower.Contains(query.ToLower)
    End If

Dim dataString As String = ""
    dataString = "{""success"":true, """ & root & """:"

   Dim s As New System.Web.Script.Serialization.JavaScriptSerializer
    dataString += s.Serialize(tbl).ToString
    dataString += "}"
    c.Response.Write(dataString)

在客户端,我使用此信息来填充ExtJs Combobox,如下所示:

{
fieldLabel: 'Inriktning',
xtype: 'combo',
store: new Ext.data.JsonStore({
url: '_handlers/handleInriktningTexter.ashx',
editor: this,
root: 'inrs',
baseParams: { func: 'loadAll', root: 'inrs' },
fields: ['id', 'Visningsnamn']
}),
displayField: 'Visningsnamn',
valueField: 'id',
valueParam: 'id',
triggerAction: 'all',
forceSelection: true,
mode: 'remote',
emptyText: 'Välj inriktning...',
name: 'inrId',
id: 'inrId',
width: 250,
allowBlank: false
}

我在代码中将参数“Visningsnamn”设置为displayParam,当它更改大小写时,它在JsonStore或组合中不能作为displayParam工作,因为从服务器返回的json没有以相同的方式命名。

任何有关正在发生的事情的想法或想法都会引起欢迎!

1 个答案:

答案 0 :(得分:0)

@DanielEldström 你遇到这种情况时遇到的问题是什么? 您可以使用index.like this[1][0] and this[1][1]

访问客户端的数据