前提
C#⇒C++/CLIの流れで動くライブラリ(DLL)作っています。
◆C++/CLIで実現したいこと
・XMLを読み込んで、自作クラスに値を割り当てて、C#に返す。
◆C#で実現したいこと
・C++/CLIから取得したクラスをベースにNewtonsoft.JsonライブラリでJson文字列へ変換
・作成したJson文字列を同様にNewtonsoft.JsonライブラリでJObject型作成。
C#であればC++/CLIで実現したいもののクラス構造、処理は算段は立ったのですが、さてC++/CLIで作る、となると知識・経験不足で難航しています。
●C++/CLIで作りたいクラス構造(C#版)
C#
1// C#で作る場合のクラスイメージです。 2// C#が呼び出すインタフェースクラス・メソッド 3public class Analyze 4{ 5 pubic JsonClass XMLAnalyze(string filePath) 6 { 7 // 処理省略 8 } 9} 10// JSONに変換するクラス群 11// メソッドはコンストラクタのみ記載。他メソッドは省略。 12internal class JsonClass 13{ 14 public ProfileList profileList; 15} 16internal class ProfileList 17{ 18 public List<Member> memberList; 19 public ProfileList() 20 { 21 memberList = new List<Member>(); 22 } 23} 24internal class Member 25{ 26 public string name; 27 public int? age; 28 public List<Carrer> carrerList; 29 30 public Member() 31 { 32 name = null; 33 age = null; 34 carrerList = new List<Carrer>(); 35 } 36} 37internal class Carrer 38{ 39 public string name; 40 pubilc int? years; 41 public Carrer() 42 { 43 name = null; 44 years = null; 45 } 46}
●C++/CLIのクラス定義
C++
1ref class Analyze; 2class JsonClass; 3class ProfileList; 4class Member; 5class Carrer;
●作りたいJsonイメージ
JSON
1{ 2 "profileList": [ 3 { 4 "memberList": [ 5 { 6 "name":"Tanaka", 7 "age":null, 8 "carrerList":[ 9 { 10 "name":null, 11 "years":5 12 } 13 ] 14 } 15 ] 16 } 17 ] 18}
●C#の処理
「C#で作る場合のクラスイメージ」の
C#
1dynamic jsonClass = XMLAnalyze("ファイルパス"); 2string jsonStr = JsonConvert.SerializeObject(jsonClass); 3JObject jobject = JObject.Parse(jsonStr);
質問内容
C++/CLIで生成したクラスをC#で受け取って、プロパティのint型にnullが入っているという状態になる方法に難航しています。
C#にはint?のようにnull許容型がありますが、C++には無い認識です。
JSON変換にあたって、数値型でもXMLに該当するタグが無ければ、「"age":null」のように"null"でも0でもなく、nullにしたいです。
C++がC#にクラスデータを送り、受け取ったクラスのint型プロパティがnull許容型となる方法はありますでしょうか?
補足
開発環境:VisualStudio2015 Professional
.NET:バージョン4.6

回答1件
あなたの回答
tips
プレビュー