我正在尝试解析看起来像这样的JSON数组:
{
"chatName": "Test",
"users": [
"User1",
"User2"
],
"someBooleanValue": true,
"someObjects": {
"object1": "someObjectValue1",
"object2": "someObjectValue2",
...
}
}
有没有办法解析someObjects对象数组,当我开始处理JSON文件之前我不知道数组有多少个对象?
所有解析都是使用Json.NET完成的。
答案 0 :(得分:1)
您可以将dynamic
用于someObjects。代码可能如下所示:
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);
}
}
答案 1 :(得分:0)
someObjects
需要对Object
(类)或JObject
(C#json)或某种Dictionary
进行去细化。
您可以使用json.net的方法反序列化json:
JsonConvert.DeserializeObject<T>
。
答案 2 :(得分:-1)
你可以使用JavaScriptSerializer()。Serialize 将对象转换为JSON字符串。
string json = new System.Web.Script.Serialization.JavaScriptSerializer()。Serialize(object name);
与反序列化类似,您可以使用反序列化函数
string json =“{\”chatName \“:\”Test \“,\”users \“:[\”User1 \“,\”User2 \“],\”someBooleanValue \“:true,\” someObjects \“:{\”object1 \“:\”someObjectValue1 \“,\”object2 \“:\”someObjectValue2 \“}}”;
Classname objectname = new System.Web.Script.Serialization.JavaScriptSerializer()。Deserialize(json);