Json.NET: 正在解析未知长度的对象数组
Json.NET: Parsing object array of unknown length
我正在尝试解析一个看起来像这样的 JSON 数组:
{
"chatName": "Test",
"users": [
"User1",
"User2"
],
"someBooleanValue": true,
"someObjects": {
"object1": "someObjectValue1",
"object2": "someObjectValue2",
...
}
}
当我不知道在开始处理 JSON 文件之前该数组将包含多少个对象时,有没有办法解析对象的 someObjects 数组?
所有解析都是使用Json.NET完成的。
someObjects
需要被反序列化为 Object
(class) 或 JObject
(C# json) 或某种 Dictionary
.
您可以使用 json.net 的方法反序列化 json:
JsonConvert.DeserializeObject<T>
.
您可以对某些对象使用 dynamic
。代码可能如下所示:
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
public class RootObject
{
public string chatName { get; set; }
public List<string> users { get; set; }
public bool someBooleanValue { get; set; }
public dynamic someObjects { get; set; }
}
public class Program
{
static public void Main()
{
string j = "{\"chatName\": \"Test\",\"users\": [\"User1\",\"User2\"],\"someBooleanValue\": true,\"someObjects\": {\"object1\": \"someObjectValue1\",\"object2\": \"someObjectValue2\"}}";
RootObject ro = JsonConvert.DeserializeObject<RootObject>(j);
Console.WriteLine(ro.someObjects.object1);
}
}
你可以使用 JavaScriptSerializer().Serialize
将对象转换为 JSON 字符串。
string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(对象名称);
与反序列化类似,您可以使用反序列化函数
string json = "{\"chatName\": \"Test\",\"users\": [\"User1\",\"User2\"] ,\"someBooleanValue\": true,\"someObjects\": {\"object1\": \"someObjectValue1\",\"object2\": \"someObjectValue2\"}}";
Classname objectname = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(json);
我正在尝试解析一个看起来像这样的 JSON 数组:
{
"chatName": "Test",
"users": [
"User1",
"User2"
],
"someBooleanValue": true,
"someObjects": {
"object1": "someObjectValue1",
"object2": "someObjectValue2",
...
}
}
当我不知道在开始处理 JSON 文件之前该数组将包含多少个对象时,有没有办法解析对象的 someObjects 数组?
所有解析都是使用Json.NET完成的。
someObjects
需要被反序列化为 Object
(class) 或 JObject
(C# json) 或某种 Dictionary
.
您可以使用 json.net 的方法反序列化 json:
JsonConvert.DeserializeObject<T>
.
您可以对某些对象使用 dynamic
。代码可能如下所示:
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
public class RootObject
{
public string chatName { get; set; }
public List<string> users { get; set; }
public bool someBooleanValue { get; set; }
public dynamic someObjects { get; set; }
}
public class Program
{
static public void Main()
{
string j = "{\"chatName\": \"Test\",\"users\": [\"User1\",\"User2\"],\"someBooleanValue\": true,\"someObjects\": {\"object1\": \"someObjectValue1\",\"object2\": \"someObjectValue2\"}}";
RootObject ro = JsonConvert.DeserializeObject<RootObject>(j);
Console.WriteLine(ro.someObjects.object1);
}
}
你可以使用 JavaScriptSerializer().Serialize 将对象转换为 JSON 字符串。
string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(对象名称);
与反序列化类似,您可以使用反序列化函数
string json = "{\"chatName\": \"Test\",\"users\": [\"User1\",\"User2\"] ,\"someBooleanValue\": true,\"someObjects\": {\"object1\": \"someObjectValue1\",\"object2\": \"someObjectValue2\"}}";
Classname objectname = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(json);