2015-09-26 73 views
0

考虑:创建一个JSON字符串和序列化它

{ 
    "Session": "0544dffdrfded", 
    "USERSession": "5588strrft235", 
    "Id": "984", 
    "Field.Type": "SingleField", 
    "Fields[0].Name": "ID", 
    "Fields[0].fieldType.typeName": "LOG", 
    "Fields[0].helpText": "12587", 
    "Fields[0].maxlength": 32, 
    "Fields[0].name": "LOGIN", 
    "Fields[0].size": 20, 
    "Fields[0].value": "a", 
    "Fields[0].Identifier": "LOGIN", 
    "Fields[0].value": "LOGINFIELD", 
    "Fields[0].isEditable": true, 
    "Fields[1].displayName": "Password", 
    "Fields[1].fieldType.typeName": "PASSWORD", 
    "Fields[1].helpText": "285887", 
    "Fields[1].maxlength": 32, 
    "Fields[1].name": "PASSWORD", 
    "Fields[1].size": 20, 
    "Fields[1].value": "123", 
    "Fields[1].valueIdentifier": "PASSWORD", 
    "Fields[1].valueMask": "LOGINFIELD", 
    "Fields[1].isEditable": true 
} 

我想JSON字符串寻找类似上述JSON参数。我正在使用以下代码:

string jsonString = "{\"cobSessionToken\":'" + Session["cobsessiontoken"].ToString() + "',\"userSessionToken\":'" + Session["usersessintoken"].ToString() + "'\",\"siteId\":'" + Session["siteid"].ToString() + "',\"credentialFields.enclosedType\":'com.yodlee.common.FieldInfoSingle',\"credentialFields[0].displayName\":'Login ID',\"credentialFields[0].fieldType.typeName\":'IF_LOGIN',\"credentialFields[0].helpText\":'111427',\"credentialFields[0].maxlength\":'32',\"credentialFields[0].name\":'LOGIN',\"credentialFields[0].size\":'20',\"credentialFields[0].value\":'" + txtUserID.Text + "',\"credentialFields[0].valueIdentifier\":'LOGIN',\"credentialFields[0].valueMask\":'LOGIN_FIELD',\"credentialFields[0].isEditable\":'true',\"credentialFields[1].displayName\":'Password',\"credentialFields[1].fieldType.typeName\":'IF_PASSWORD'\",\"credentialFields[1].helpText\":'111428',\"credentialFields[1].maxlength\":'32',\"credentialFields[1].name\":'PASSWORD',\"credentialFields[1].size\":'20',\"credentialFields[1].value\":'" + txtPassword.Text + "',\"credentialFields[1].valueIdentifier\":'PASSWORD',\"credentialFields[1].valueMask\":'LOGIN_FIELD',\"credentialFields[1].isEditable\":'true'}"; 
     Label1.Text= JsonConvert.SerializeObject(jsonString); 

我该怎么做?

+2

JSON *有*就是这样吗?这将是一种非常非常奇怪的方式来表示JSON。通常你会有一个'Fields'属性,它将是一个由两个对象组成的数组,每个对象的属性都是'Name'等 –

+1

(我强烈建议不要用这种方法构建JSON,而应该使用JSON API,如Json.NET。) –

+0

您可以使用** JObject.Parse(jsonString)** – Vaseph

回答

0

正确的方法是通过Newtonsoft JSON DLL文件对对象进行序列化和反序列化。此链接直接从源提供了很好的样本:

http://www.newtonsoft.com/json/help/html/SerializingJSON.htm

所以我会建议使用一个对象,而不是建筑的字符串。这很容易出错,维护也不好。

+0

我没有使用任何类来反序列化JSON响应。我直接在动态变量中获取响应并反序列化它。我不知道如何使用类来序列化和反序列化JSON –

+0

因此,您应该看看Newtonsoft JSON 。因为这会完全符合你的要求,有时甚至可以在不重新发明轮子的情况下使用类。 – STORM

相关问题