【发布时间】:2016-04-20 09:27:33
【问题描述】:
我想读取嵌套的 JSON 并将数据存储在数据库中。我将 JSON 对象作为“application/json”从 post 方法获取到我的 WCF 服务。
为此,我将 JSON 转换为字典。但仅获得第一级值。获取二级 JSON 的对象。
下面是我用来将 JSON 转换为字典的代码:
[Serializable]
public class JsonDictionary : ISerializable
{
private Dictionary<string, object> m_entries;
public JsonDictionary()
{
m_entries = new Dictionary<string, object>();
}
public IEnumerable<KeyValuePair<string, object>> Entries
{
get { return m_entries; }
}
protected JsonDictionary(SerializationInfo info, StreamingContext context)
{
m_entries = new Dictionary<string, object>();
foreach (var entry in info)
{
m_entries.Add(entry.Name, entry.Value);
}
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
foreach (var entry in m_entries)
{
info.AddValue(entry.Key, entry.Value);
}
}
}
以下是向 WCF 发布的 JSON:
在此,获取对象而不是“office_address”、“financial_details”、“residence_address”和“personal_details”的值。
{
"business_name": "Test Business",
"fk_loan_id": "kh-aaaaa3232",
"proprietor_details": {
"office_address": {
"email_id": "aaa.aaa@aaa.com",
"alternative_mobile_number": "00000",
"pincode": "00000",
"landline_number": "00000",
"city": "Tutne",
"flat_number": "000",
"street": "Test Street",
"locality": "tLocality",
"state": "SGDS",
"mobile_number": "0000000000"
},
"date_of_incorporation": "01/03/2010",
"financial_details": {
"TAN": "ghdg45341f",
"TIN": "dc5345fg6g",
"VAT": "dgdgd544t4",
"PAN": "AAAAA7614A"
},
"residence_address": {
"email_id": "aaa.-aa@aa.com",
"alternative_mobile_number": "0000000",
"pincode": "00000",
"landline_number": "00000",
"city": "SFSS",
"flat_number": "055",
"street": "DASAW",
"locality": "Local",
"state": "AAAAA",
"mobile_number": "000000"
},
"personal_details": {
"gender": "M",
"date_of_birth": "06/07/1969",
"last_name": "AAA",
"middle_name": "A",
"first_name": "AAAA"
}
}
}
【问题讨论】:
-
您已将您的字典定义为
Dictionary<string, object>,并且您将获得一个object作为密钥。这就是Dictionary<string, object>的作用。如果您希望它返回对象以外的其他内容,请不要使用object作为您的值类型。 -
我使用的任何东西,都将 office_address 视为计数为 0 的对象