C#通过JSON打印的NullReferenceException
我对JSON打印的NullReferenceException有一些问题。我想解析动态创建的JSON代码,并写出它们的值 这是一个我想用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
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();
}