マイJSON形式は次のようです。 ですが、常にnull値を返します。JSON配列からデータを読み込む
JavaScriptSerializer ser = new JavaScriptSerializer();
nameList myNames = ser.Deserialize<nameList>(json);
マイJSON形式は次のようです。 ですが、常にnull値を返します。JSON配列からデータを読み込む
JavaScriptSerializer ser = new JavaScriptSerializer();
nameList myNames = ser.Deserialize<nameList>(json);
パブリッククラス名前リスト{パブリック名[]翻訳{取得します。セット; }}
これは、Jsonをマップするクラスが正しくありません。
JSONをデシリアライズするためにこれらのクラスを試してみて、それは完全に正常に動作します:nameList
クラスに基づいて
var text = myNames.data.translations[0].translatedText;
は完璧に感謝しています....先に触れたことを忘れていました –
@AnoopMishraあなたは答えが「;-)」だった場合にマークする必要があります。 – Jim
(から:
public class Translation
{
public string translatedText { get; set; }
}
public class Data
{
public List<Translation> translations { get; set; }
}
public class nameList
{
public Data data { get; set; }
}
例translatedText
プロパティに到達コメント)をJSONが変換され、サンプルJSONが提供されている場合、戻り値がnullである理由はDeserialize
メソッドはクラスにマップできません。
提供された情報から、必要なクラスを再作成しました。
class nameList {
public name[] Translator { get; set; }
}
class name {
public string TranslatedText { get; set; }
}
私は、実行には、次の
var serializer = new JavaScriptSerializer();
// The json data, in one line
string json = "{\"data\":{\"translations\":[{\"translatedText\": \"مرحبا\"}]}}";
// Convert back into object similar to described
nameList myNames = serializer.Deserialize<nameList>(json);
try {
// Attempt to access
Console.WriteLine(myNames.Translator[0]);
}
catch (Exception ex) {
Console.WriteLine("Fail:" + ex.Message);
}
を使用して、これらのクラスに提供JSONを解析しようとしましたが、以下は、コンソールに出力しました。
Fail: Object reference not set to an instance of an object.
戻り値がnullだったことを意味します。
前述のように、これはDeserialize
メソッドがクラスにマップできないためです。 (InvalidOperationException
がトリガーしなかったのは不思議ですが)nameList
のインスタンスを変換することでJSONをどのようにマッピングできるかを確認できます。
// Manually created object
nameList myNames = new nameList() {
Translator = new name[] {
new name() { TranslatedText = "مرحبا" }
}
};
// Convert to JSON
string json = serializer.Serialize(myNames);
Console.WriteLine("JSON:\n" + json);
実行時に、以下が出力されました。
JSON:
{"Translator":[{"TranslatedText":"?????"}]}
は別にVSCodeデバッグコンソールがその言語をサポートしていないという明白な事実から、我々はいくつかの非常に異なるJSONに直面しています。
だから、サンプルJSON中3に比べてわずか2という名前のフィールドが、あり
{ "Translator": [
{
"TranslatedText": "مرحبا"
}
]
}
JavaScriptSerializer
クラスで必須です。 (JSON.netのような他のライブラリにはこの制限があります。)うまくいけば、これは役に立ちました。
名前リストはどのようなものですか –
public class nameList { public name [] Translator {get;セット; } } –
なぜnewtonsoft.jsonを使用しないのですか? – Phiter