JSONをcsvに解析しています。次のように私は私のクラスを設定している。その後、C#JSON.netのヌルネストされたオブジェクト
public class SearchObj
{
public class Property
{
public string __cloudera_internal__hueLink { get; set; }
}
public class root
{
public string blockSize { get; set; }
public string clusteredByColNames { get; set; }
public string compressed { get; set; }
public string created { get; set; }
public string dataType { get; set; }
public string deleted { get; set; }
public Property properties { get; set; }
}
}
後、私は、このオブジェクトで作業に:
string json = infile.ReadToEnd();
var rootObject = JsonConvert.DeserializeObject<List<SearchObj.root>>(json);
for (int i = 0; i < rootObject.Count; i++)
{
//holding is a dict that holds json key/value pairs,
//arg[1] is a prefix for key:value pairs, in this case, no prefix
//so a nested key goes into dictionary as key.nestedkey
ResolveTypeAndValue(rootObject[i], "", holding);
}
そしてもちろん、我々はResolveメソッドのコードを参照する必要があります。
private static void ResolveTypeAndValue(object obj, string name, Dictionary<string, string> storage)
{
//this next line is the error problem
var type = obj.GetType();
foreach (var p in type.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))
{
if (p.PropertyType.IsClass && p.PropertyType != typeof(string))
{
var currentObj = p.GetValue(obj);
ResolveTypeAndValue(currentObj, p.Name + ".", storage);
}
else
{
string val = "";
if (p.GetValue(obj) != null)
{
val = p.GetValue(obj).ToString();
}
storage.Add(name + p.Name, val);
}
}
}
これを実行すると、 "未処理の例外 'System.NullReferenceException'が発生しました。....."上記の行にタグを付けます。私はそれがほとんどの時間、 "プロパティ"キーがnullであると信じています。実際には、ネストされているにもかかわらず、 "properites"キーはキーとして "__cloudera_internal__hueLink"の単一のキー:値のペアと値としてhtmlアドレス(本質的にテキスト)を持っています。
問題のない別のJSONスキーマセットでこのコードを正常に実行しましたが、私の人生では、基本的にキー/値のペアを「プロパティ」などのように設定する方法はわかりません。 "または" properties .__ cloudera_internal__hueLink ":"値フィールド "。以前は入れ子になっていたjsonオブジェクトには、エントリーからエントリーまでさまざまでしたが、常にその中に何かがありました。
あなたはたぶん新人レベルで助けを必要とするでしょう、私は利用可能なすべてのものとしてC#のみを使用していますが、明らかにJSONオブジェクトを扱うことについてはここに沿って1つか2つを選んでいますが、これは私はかなり難しい立ち往生している
Iエラーまたは「プロパティ」すべてに移入されませんを取得し、スローキーが見つからないエラー
JSONの一部を提供できますか? – Kamen