は私のソリューションです:
はJSON.Netのためにこれらの設定を使用します。参照を変換する
JsonSerializerSettings settings = new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects,
};
使用このインターセプタ:
public static class JSONInterceptor
{
public static string sanitizeJSON(string originalJSONFromJava)
{
// Get ID right from Jackson to JSON.Net
string pattern = Regex.Escape(@"""@id"":") + "(\\d+)";
string replacement = @"""$id"":""$1""";
Regex rgx = new Regex(pattern);
string output = rgx.Replace(originalJSONFromJava, replacement);
// Convert Jackson reference in array
pattern = @",(\d+)";
replacement = @",{""$ref"":""$1""}";
rgx = new Regex(pattern);
output = rgx.Replace(output, replacement);
// Convert single Jackson reference to ref
pattern = Regex.Escape(@"""\\w+"":") + "(\\d+)";
replacement = @"""$ref"":""$1""";
rgx = new Regex(pattern);
output = rgx.Replace(output, replacement);
return output;
}
}
インターセプターを呼び出し、このようにデシリアライズを:
asset = JsonConvert.DeserializeObject<Asset>(JSONInterceptor.sanitizeJSON(response), settings);
(JSON.Net)のようなものに変換する必要がある
{"@id":1,......."parent":{"@id":15,.....},"agents":[{"@id":6, ......},12,{...}]...}
:
{"$id":"1",...,"$ref":"15",....,"agents":[{...,"$ref":"6",...]}
public class Asset {
....
// Parent asset
public Asset parent;
// Asset agents
public List<Agents> agent;
....
}
ので、ジャクソンのようなものを生成します:の
資産クラスは、このレイアウトを持っています
これは上記のコードの機能です。
希望すると、誰かに役立ちます。
ありがとうございました。あなたはあなたの投稿を編集して質問のように表現できるように親切にして、あなたの解決策を質問の回答欄に移動しますか?そのフォーマットはこのサイトでうまく機能し、他の人が追加の解決策を提供できるようになります。 –
@Brian ....やりました、今は大丈夫ですね;-) – vogje01
ありがとう!私はいくつかの非常にマイナーな編集をしましたが、そうでなければうまく見えます。 –