san*_*s90 0 .net c# serialization json deserialization
我的JSON看起来像这样 -
{"0abc34m": {"time": "13 Mar 17, 4:50:02 PM", "pd": "oscar"}}
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码对此进行反序列化 -
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(JSONstring));
ms.Position = 0;
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Rootobject));
Rootobject myDataTypObj = (Rootobject)jsonSerializer.ReadObject(ms);
Run Code Online (Sandbox Code Playgroud)
我使用Visual Studio函数"粘贴JSON作为类"函数来生成这些类 -
public class Rootobject
{
public _00A462 _00a462 { get; set; }
}
public class _00A462
{
public string time { get; set; }
public string pd { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想访问JSON的"time"和"pd"成员.
JSON的第一部分是每次收到新的JSON字符串时都会更改的数字.
我没有错误但我的myDataTypObj具有_00A462的空值.
我只关心层次结构中二级的字段.我正确地接近这个问题,这里有什么问题?
一种简单的方法是使用JSON.Net并将JSON反序列化为 Dictionary
using Newtonsoft.Json;
class Program
{
static void Main( string[] args )
{
var jsonString = "{\"0abc34m\":{\"time\":\"13 Mar 17, 4:50:02 PM\",\"pd\":\"oscar\"}}";
Dictionary<string, Data> data;
data = JsonConvert.DeserializeObject<Dictionary<string, Data>>( jsonString );
var key = data.First().Key; // 0abc34m
var time = data.First().Value.TimeString; // 13 Mar 17, 4:50:02 PM
var pd = data.First().Value.DataString; // oscar
}
}
public class Data
{
[JsonProperty("time")]
public string TimeString { get; set; }
[JsonProperty("pd")]
public string DataString { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
99 次 |
最近记录: |