C# 使用NETFramework 3.5解析JSON。Can';无法从对象获取数据

C# 使用NETFramework 3.5解析JSON。Can';无法从对象获取数据,c#,json,.net-3.5,C#,Json,.net 3.5,我只是无法在json中获取嵌入对象的键和值。 我想获得这些键和值,比如{user:'admin',msg:'exit'}。 通过这段代码,我得到item.Key(即json中的id)和item.Value(System.Collections.Generic.Dictionary`2[System.String,System.Object]) 但我不知道该怎么处理这个东西。如何从中获取数据? 我从服务器获取json- { "365": { "user": "admin",

我只是无法在json中获取嵌入对象的键和值。 我想获得这些键和值,比如
{user:'admin',msg:'exit'}
。 通过这段代码,我得到item.Key(即json中的id)和item.Value(System.Collections.Generic.Dictionary`2[System.String,System.Object]) 但我不知道该怎么处理这个东西。如何从中获取数据? 我从服务器获取json-

{
    "365": {
        "user": "admin",
        "msg": "exit"
    },
    "366": {
        "user": "user",
        "msg": "enter"
    },
    "370": {
        "user": "user",
        "msg": "exit"
    },
    "372": {
        "user": "user",
        "msg": "exit"
    },
    "373": {
        "user": "admin",
        "msg": "exit"
    }
}
谢谢你的回答

附言。 我不想使用任何外部lib

using System;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Web.Script.Serialization;

namespace JSONTestconsole
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient wc = new WebClient();
            wc.Proxy = null;
            string data = wc.DownloadString("http://temp.net");

            JavaScriptSerializer ser = new JavaScriptSerializer();
            var obj = ser.DeserializeObject(data) as ICollection;
            foreach (KeyValuePair<string, object> item in obj)
            {
                var id = item.Key;
                Console.WriteLine(id);
                Console.WriteLine(item.Value);
            }

            Console.ReadLine();
        }
    }
}
使用系统;
使用系统集合;
使用System.Collections.Generic;
Net系统;
使用System.Web.Script.Serialization;
命名空间JSONTestconsole
{
班级计划
{
静态void Main(字符串[]参数)
{
WebClient wc=新的WebClient();
wc.Proxy=null;
字符串数据=wc.DownloadString(“http://temp.net");
JavaScriptSerializer ser=新的JavaScriptSerializer();
var obj=ser.DeserializeObject(数据)作为ICollection;
foreach(obj中的KeyValuePair项)
{
var id=item.Key;
控制台写入线(id);
Console.WriteLine(项值);
}
Console.ReadLine();
}
}
}

您正在反序列化到不会公开值属性的
对象。json表示序列化对象,因此最好反序列化为同一类型:

public class UserMsg
{
    public string user { get; set; }
    public string msg { get; set; }
}
要将其用作值目标类型,请执行以下操作:

string jstr = ...from whereever
JavaScriptSerializer jss = new JavaScriptSerializer();
Dictionary<string, UserMsg> myCol = jss.Deserialize<Dictionary<string, UserMsg>>(jstr);

// test result:
foreach (KeyValuePair<string, UserMsg> kvp in myCol)
{
    Console.WriteLine("Key: {0}", kvp.Key);
    Console.WriteLine("  Value: {0}, {1}", kvp.Value.user, kvp.Value.msg);
}
string jstr=…从何处开始
JavaScriptSerializer jss=新的JavaScriptSerializer();
字典mycl=jss.Deserialize(jstr);
//测试结果:
foreach(mycl中的KeyValuePair kvp)
{
WriteLine(“Key:{0}”,kvp.Key);
WriteLine(“Value:{0},{1}”,kvp.Value.user,kvp.Value.msg);
}
输出:

密钥:365
值:管理,退出
密钥:366
值:用户,输入
(等)

VS将帮助创建类:将有效的json放在剪贴板上;然后
编辑菜单->粘贴特殊->将Json粘贴为类


你可能需要做一些调整。我认为是VS2010添加了此功能。

这不是有效的jsonFixed,但仍然不知道如何处理item.Value对象