static void Main(string[] args) { string jsonString = "{\"data\":[{\"key\":\"Audio\",\"it.e][\\\"ms\":[{\"key\":\"Bluetooth Headphones\",\"items\":null,\"count\":13482,\"summary\":[12099500.9899]}]}],\"totalCount\":1000000,\"summary\":[3638256074.5103]}"; string jsonString2 = "[[{\"key\":\"Bluetooth Headphones\",\"items\":null,\"count\":13482,\"summary\":[12099500.9899]}],[\"value\"]]"; string jsonString1 = "{\"ABC\": [\"a\", \"b\"]}"; var obj = JsonSerializerUtil.Deserialize(jsonString); Console.WriteLine("Enter conversion option (0: Default, 1: JToken): "); var convertOption = Console.ReadLine(); Console.Clear(); if (convertOption == "1") { Console.WriteLine("Converting JSON to Object Initializer using Token types"); string objectIniOutput = new JTokenConverter().ConstructObjectInitializerFormat(obj); Console.WriteLine(objectIniOutput); } else if (convertOption == "0") { Console.WriteLine("Converting JSON to Object Initializer using Property names"); string objectIniOutput = new DefaultConverter().ConstructObjectInitializerFormat(obj); Console.WriteLine(objectIniOutput); } else { Console.WriteLine("Invalid option provided."); } Console.ReadLine(); }
private static string Convert(string path) { var schemaText = File.ReadAllText(path); var jset = new JsonLoadSettings { CommentHandling = CommentHandling.Load }; var obj = JToken.Parse(schemaText, jset); return(JTokenConverter.Convert(obj)); }
private async void JsonMenuItemCallback(object sender, EventArgs e) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); try { var schemaText = Clipboard.GetText(); var doc = JToken.Parse(schemaText, new JsonLoadSettings { CommentHandling = CommentHandling.Load }); var classText = JTokenConverter.Convert(doc, Options.ToConverterOptions()); try { dte.UndoContext.Open("Paste JSON Schema as Class"); var selection = (TextSelection)dte.ActiveDocument.Selection; if (selection != null) { selection.Insert(classText); dte.ActiveDocument.Activate(); dte.ExecuteCommand("Edit.FormatDocument"); } } finally { dte.UndoContext.Close(); } } catch (Exception ex) { MessageBox.Show( "Copied text is not a JSON!\r\n" + ex.Message, "JSON Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
/// <summary> /// サービス実行 /// </summary> /// <param name="config">設定項目</param> public static async Task Execute(WebhookServiceConfig config) { Trace.TraceInformation("Start"); // 引数のnullチェック if (config == null) { Trace.TraceInformation("Config is Null"); return; } // 署名の検証を行う場合 if (config.IsExecuteVerifySign) { // 署名の検証 bool verifySignResult = await AuthenticationService.VerifySign(GetSignature( config.RequestHeaders ), config.RequestContent).ConfigureAwait(false); // NGなら以下の処理を行わない if (!verifySignResult) { Trace.TraceInformation("Verify Sign Result is NG"); return; } } // リクエストトークンをデータモデルに変換 WebhookRequest request = JTokenConverter.ConvertJTokenToWebhookRequest(config.RequestJToken) ?? new WebhookRequest(); // チャンネルアクセストークンの取得 string channelAccessToken; // ロングタームチャンネルアクセストークンを使用する場合 if (config.IsUseLongTermChannelAccessToken) { channelAccessToken = ConfigurationManager.AppSettings["LongTermChannelAccessToken"]; } // ロングタームチャンネルアクセストークンを使用しない場合はチャンネルアクセストークンを発行する else { IssueChannelAccessTokenResponse channelAccessTokenResponse = await AuthenticationService.IssueChannelAccessToken().ConfigureAwait(false); channelAccessToken = channelAccessTokenResponse?.access_token; } // イベント毎に分岐 foreach (EventBase webhookEvent in request.events) { // 友達追加時イベント if (webhookEvent is FollowEvent) { config.FollowEventHandler?.Invoke(channelAccessToken, (webhookEvent as FollowEvent)?.replyToken); } // ブロック時イベント else if (webhookEvent is UnfollowEvent) { config.UnfollowEventHandler?.Invoke(); } // グループ追加時イベント else if (webhookEvent is JoinEvent) { config.JoinEventHandler?.Invoke(channelAccessToken, (webhookEvent as JoinEvent)?.replyToken); } // グループ退会時イベント else if (webhookEvent is LeaveEvent) { config.LeaveEventHandler?.Invoke(); } // メッセージイベント else if (webhookEvent is MessageEvent) { MessageEvent messageEvent = webhookEvent as MessageEvent; // 音声 if (messageEvent?.message is AudioMessage) { config.AudioMessageEventHandler?.Invoke(); } // ファイル else if (messageEvent?.message is FileMessage) { config.FileMessageEventHandler?.Invoke(); } // 画像 else if (messageEvent?.message is ImageMessage) { config.ImageMessageEventHandler?.Invoke(); } // 位置情報 else if (messageEvent?.message is LocationMessage) { config.LocationMessageEventHandler?.Invoke(); } // スタンプ else if (messageEvent?.message is StickerMessage) { config.StickerMessageEventHandler?.Invoke(); } // テキスト else if (messageEvent?.message is TextMessage) { TextMessage textMessage = messageEvent?.message as TextMessage; config.TextMessageEventHandler?.Invoke(channelAccessToken, messageEvent?.source, messageEvent?.replyToken, textMessage?.text); } // 動画 else if (messageEvent?.message is VideoMessage) { config.VideoMessageEventHandler?.Invoke(); } // 想定外のイベントの時は何もしない else { Trace.TraceError("Unexpected Type"); } } // ポストバックイベント else if (webhookEvent is PostbackEvent) { config.PostbackMessageEventHandler?.Invoke(); } // ビーコンイベント else if (webhookEvent is BeaconEvent) { // バナータップ時イベント if (((BeaconEvent)webhookEvent)?.beacon is BannerBeacon) { config.BannerBeaconEventHandler?.Invoke(); } // バナー受信圏内に入った時のイベント else if (((BeaconEvent)webhookEvent)?.beacon is EnterBeacon) { config.EnterBeaconEventHandler?.Invoke(); } // バナー受信圏外に出た時のイベント else if (((BeaconEvent)webhookEvent)?.beacon is LeaveBeacon) { config.LeaveBeaconEventHandler?.Invoke(); } // 想定外のイベントの時は何もしない else { Trace.TraceError("Unexpected Beacon Type"); } } else { Trace.TraceError("Unexpected Message Type"); } } Trace.TraceInformation("End"); }
public void Roundtrip_WorksGood() { Player player = PersonFactory.CreatePlayer(); var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto, }; var serializer = JsonSerializer.CreateDefault(settings); JToken token = JToken.FromObject(player, serializer); var converter = new JTokenConverter(JsonXmlSettings.Defaults); var xnode = converter.ToXNode(token); var actualXml = new XElement( XNamespace.None.GetName("wrap"), new XAttribute(XNamespace.Xmlns.GetName("jxml"), "http://www.xmlsh.org/jxml"), new XAttribute(XNamespace.Xmlns.GetName("jsonx"), "http://www.json.net/xml"), xnode); var expectedXml = XDocument.Parse(@"<wrap xmlns:jxml=""http://www.xmlsh.org/jxml"" xmlns:jsonx=""http://www.json.net/xml""> <jxml:object> <jxml:member name=""TelephoneNumbers""> <jxml:array> <jxml:object> <jxml:member name=""Type""> <jsonx:integer>0</jsonx:integer> </jxml:member> <jxml:member name=""CountryCode""> <jxml:string>44</jxml:string> </jxml:member> <jxml:member name=""AreaCode""> <jxml:string>151</jxml:string> </jxml:member> <jxml:member name=""LocalNumber""> <jxml:string>123 4567</jxml:string> </jxml:member> <jxml:member name=""RawNumber""> <jxml:null /> </jxml:member> </jxml:object> <jxml:object> <jxml:member name=""Type""> <jsonx:integer>1</jsonx:integer> </jxml:member> <jxml:member name=""CountryCode""> <jxml:null /> </jxml:member> <jxml:member name=""AreaCode""> <jxml:null /> </jxml:member> <jxml:member name=""LocalNumber""> <jxml:null /> </jxml:member> <jxml:member name=""RawNumber""> <jxml:string>+31 (141) 123 4567</jxml:string> </jxml:member> </jxml:object> </jxml:array> </jxml:member> <jxml:member name=""Addresses""> <jxml:array> <jxml:object> <jxml:member name=""Type""> <jsonx:integer>0</jsonx:integer> </jxml:member> <jxml:member name=""PropertyNumber""> <jxml:null /> </jxml:member> <jxml:member name=""PropertyName""> <jxml:string>14</jxml:string> </jxml:member> <jxml:member name=""Street""> <jxml:string>Some Road</jxml:string> </jxml:member> <jxml:member name=""Locality""> <jxml:string>Some town</jxml:string> </jxml:member> <jxml:member name=""Region""> <jxml:string>My county</jxml:string> </jxml:member> <jxml:member name=""Country""> <jxml:string>My country</jxml:string> </jxml:member> <jxml:member name=""PostalCode""> <jxml:string>RG5 3AS</jxml:string> </jxml:member> </jxml:object> <jxml:object> <jxml:member name=""Type""> <jsonx:integer>1</jsonx:integer> </jxml:member> <jxml:member name=""PropertyNumber""> <jsonx:integer>5</jsonx:integer> </jxml:member> <jxml:member name=""PropertyName""> <jxml:null /> </jxml:member> <jxml:member name=""Street""> <jxml:string>Some Road</jxml:string> </jxml:member> <jxml:member name=""Locality""> <jxml:string>Some town</jxml:string> </jxml:member> <jxml:member name=""Region""> <jxml:string>My county</jxml:string> </jxml:member> <jxml:member name=""Country""> <jxml:string>My country</jxml:string> </jxml:member> <jxml:member name=""PostalCode""> <jxml:string>RG5 3AS</jxml:string> </jxml:member> </jxml:object> </jxml:array> </jxml:member> <jxml:member name=""DateOfBirth""> <jsonx:dateTime>1965-04-15T00:00:00</jsonx:dateTime> </jxml:member> <jxml:member name=""Notes""> <jxml:array> <jxml:object> <jxml:member name=""$type""> <jxml:string>JsonXml.Test.POCOs.SpecialNote, JsonXml.Test</jxml:string> </jxml:member> <jxml:member name=""Blah""> <jsonx:integer>1</jsonx:integer> </jxml:member> <jxml:member name=""Note""> <jxml:string>This is some note content unicode-->ᶍ<--unicode</jxml:string> </jxml:member> <jxml:member name=""Recorded""> <jsonx:dateTimeOffset>2013-04-06T10:53:28.456+05:00</jsonx:dateTimeOffset> </jxml:member> </jxml:object> </jxml:array> </jxml:member> <jxml:member name=""Image""> <jsonx:bytes>EhUX</jsonx:bytes> </jxml:member> <jxml:member name=""Website""> <jsonx:uri>http://mywebsite.com/</jsonx:uri> </jxml:member> <jxml:member name=""TimeWithClub""> <jsonx:duration>P237DT5H4M17S</jsonx:duration> </jxml:member> <jxml:member name=""ID""> <jsonx:uuid>0d476eb3-0f4d-40ef-81a7-ea9d2bdefc18</jsonx:uuid> </jxml:member> <jxml:member name=""Name""> <jxml:object> <jxml:member name=""Title""> <jxml:string>Mr</jxml:string> </jxml:member> <jxml:member name=""FirstName""> <jxml:string>Joe</jxml:string> </jxml:member> <jxml:member name=""LastName""> <jxml:string>Bloggs</jxml:string> </jxml:member> </jxml:object> </jxml:member> </jxml:object> </wrap>").FirstNode; Assert.IsTrue(XNode.DeepEquals(expectedXml, actualXml), "XNode should be identical"); var token2 = converter.ToJToken(xnode); var player2 = token2.ToObject <Player>(serializer); JToken token3 = JToken.FromObject(player2, serializer); Assert.IsTrue(JToken.DeepEquals(token, token3), "Tokens should match"); }