C#通过JSON打印的NullReferenceException

C#通过JSON打印的NullReferenceException,c#,json,object,dynamic,C#,Json,Object,Dynamic,我对JSON打印的NullReferenceException有一些问题。我想解析动态创建的JSON代码,并写出它们的值 这是一个我想用System.JSON(Object.parse)解析的JSON示例(这些JSON是由PHP代码创建的,并不总是六项长,“db”给出了列表的大小): 所以我想通过一个for循环得到从a1到a6的所有值。我尝试了这段代码(以及其他很多代码),但它不起作用。我得到: Microsoft.CSharp.RuntimeBinder.RuntimeBinderExcep

我对JSON打印的NullReferenceException有一些问题。我想解析动态创建的JSON代码,并写出它们的值

这是一个我想用
System.JSON(Object.parse)
解析的JSON示例(这些JSON是由PHP代码创建的,并不总是六项长,“db”给出了列表的大小):


所以我想通过一个
for
循环得到从a1到a6的所有值。我尝试了这段代码(以及其他很多代码),但它不起作用。我得到:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException->无法对空引用执行运行时绑定

“NullReferenceException”->对象引用未设置为对象的实例

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
Net系统;
//使用Newtonsoft.Json;
使用System.Json;
使用System.IO;
运用系统反思;
名称空间cc3
{
班级计划
{
静态void Main(字符串[]参数)
{
控制台。写入(“用户名:”;
字符串user=Console.ReadLine();
控制台。写入(“密码:”);
string pass=Console.ReadLine();
CookieContainer cookies=新CookieContainer();
ServicePointManager.Expect100Continue=false;
HttpWebRequest httpWReq=(HttpWebRequest)WebRequest.Create(“http://XXXXX/fafa.php");
ascienceoding encoding=新的ascienceoding();
string postData=“user=”+用户;
postData+=”&psw=“+pass;
byte[]data=encoding.GetBytes(postData);
httpWReq.CookieContainer=cookies;
httpWReq.Method=“POST”;
httpWReq.ContentType=“应用程序/x-www-form-urlencoded”;
httpWReq.ContentLength=data.Length;
使用(Stream newStream=httpWReq.GetRequestStream())
{
newStream.Write(数据,0,数据长度);
newStream.Close();
WebResponse=httpWReq.GetResponse();
Console.WriteLine(((HttpWebResponse)response.StatusDescription);
Stream newStream2=response.GetResponseStream();
StreamReader=新的StreamReader(newStream2);
字符串responseFromServer=reader.ReadToEnd();
responseFromServer=responseFromServer.Replace(“\n”和“”);
responseFromServer=responseFromServer.Replace(“\r”和“”);
responseFromServer=responseFromServer.Replace(“\t”和“”);
动态json=JsonValue.Parse(responseFromServer);
WriteLine(json.crossclouds.files.db);
string db=json.crossclouds.files.db;
db=db.Replace(“\”,“);
Console.WriteLine(json[“db”]);
对于(int i=1;i我已经做了:)我将JSON数据更改为“文件”:[{“名称”:“abc”,等等…并应用了foreach循环–

我已经做了:)我将JSON数据更改为“文件”:[{“名称”:“abc”,等等…并应用了foreach循环
{
    "crossclouds": {
        "files": {
            "db":"6",
            "a1": {
                "name": "list.txt",
                "id": "2",
                "size": "0",
                "modif": "2012-05-17 23:10:33",
                "given": "3vdcl7WXo5I0m9rcXontHEIQgf661JXS.txt",
                "sec": "6To92mE15BO7",
                "mappa": "/"
            },

            "a2": {
                "name": "hexa2.png",
                "id": "3",
                "size": "0",
                "modif": "2012-05-17 23:10:33",
                "given": "Z87L6f84XUEtLVJ53g0T7ifYnnJ47UmE.png",
                "sec": "iKX2bL9UsU98",
                "mappa": "/"
            },

            ....

            "a6": {
                "name": "kristof.txt",
                "id": "24",
                "size": "127",
                "modif": "2012-05-17 23:10:33",
                "given": "Ze5U3oi59CrkI4xTXLjUP07rilVa0jbS.txt",
                "sec": "h25yaL8207n6",
                "mappa": "/"
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
//using Newtonsoft.Json;
using System.Json;
using System.IO;
using System.Reflection;

namespace cc3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Username: ");
            string user = Console.ReadLine();
            Console.Write("Password: ");
            string pass = Console.ReadLine();

            CookieContainer cookies = new CookieContainer();
            ServicePointManager.Expect100Continue = false;
            HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create("http://XXXXX/fafa.php");
            ASCIIEncoding encoding = new ASCIIEncoding();
            string postData = "user=" + user;
            postData += "&psw=" + pass;
            byte[] data = encoding.GetBytes(postData);

            httpWReq.CookieContainer = cookies;

            httpWReq.Method = "POST";
            httpWReq.ContentType = "application/x-www-form-urlencoded";
            httpWReq.ContentLength = data.Length;

            using (Stream newStream = httpWReq.GetRequestStream())
            {
                newStream.Write(data, 0, data.Length);
                newStream.Close();
                WebResponse response = httpWReq.GetResponse();
                Console.WriteLine(((HttpWebResponse)response).StatusDescription);
                Stream newStream2 = response.GetResponseStream();
                StreamReader reader = new StreamReader(newStream2);
                string responseFromServer = reader.ReadToEnd();
                responseFromServer = responseFromServer.Replace("\n", "");
                responseFromServer = responseFromServer.Replace("\r", "");
                responseFromServer = responseFromServer.Replace("\t", "");

                dynamic json = JsonValue.Parse(responseFromServer);

                Console.WriteLine(json.crossclouds.files.db);
                string db = json.crossclouds.files.db;
                db = db.Replace("\"", "");

                Console.WriteLine(json["db"]);

                for (int i = 1; i <= Convert.ToInt16(db); i++)
                {
                    string av = "a" + Convert.ToString(i);
                    object av2 = Convert.ToString("json.crossclouds.files." + av);
                    object r1 = (av2).GetType().GetProperty("name").GetValue(av2, null);

                    if (r1 == null)
                    {
                        Console.WriteLine("Unknown");
                    }
                    else
                    {
                        Console.WriteLine(r1);
                    }
                }
            }
            reader.Close();
            newStream2.Close();
            response.Close();
        }
        Console.ReadLine();
    }