質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

2回答

456閲覧

C#でWP_Queryの使用方法について

go-kawano

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2018/05/07 08:43

編集2018/05/08 08:16

WP REST API v2で投稿編集日で期間を設定して投稿を取得したいに派生する質問です。

ベストアンサーで頂いた

filter 引数を使うと WP_Query と同様に date_query での詳細な期間指定が可能です。

について、C#で実装しようとしています。

C#でクエリ文字列を生成する際には、HttpUtility.ParseQueryString出来そうなのですが、
下記のようなネストされたデータをクエリ文字列にする方法が分かりません。

Json

1{ 2 "filter": { 3 "date_query": [ 4 { 5 "column": "post_modified", 6 "after": "2018-04-03", 7 "before": "2018-04-04", 8 "inclusive": true 9 } 10 ] 11 } 12}

どなたかご教示頂けたらと思います。

2018/05/08 追記

当方がやりたいことは、上記JSONデータのクエリ文字列を生成したいです。
PHPでは、http_build_query()でオブジェクトを渡せばできるみたいですが、C#では出来ないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

以下の方法で上記jsonデータのクエリ文字列を生成できました。

C#

1 NameValueCollection query = System.Web.HttpUtility.ParseQueryString(string.Empty); 2 query.Add("filter[date_query][0][column]", "post_modified"); 3 query.Add("filter[date_query][0][after]", "2018-04-03"); 4 query.Add("filter[date_query][0][before]", "2018-04-04"); 5 query.Add("filter[date_query][0][inclusive]", "1"); 6 7 nv.ToString(); 8      //filter%5bdate_query%5d%5b0%5d%5bcolumn%5d=post_modified&filter%5bdate_query%5d%5b0%5d%5bafter%5d=2018-04-03&filter%5bdate_query%5d%5b0%5d%5bbefore%5d=2018-04-04&filter%5bdate_query%5d%5b0%5d%5binclusive%5d=1 9

投稿2018/05/09 02:45

go-kawano

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ParseQueryStringから取得したNameValueCollection型ToString()するとクエリ文字列を返してくれるのでそれを利用して
JSONをパースしてNameValueCollectionに必要なものをAddしていくのはどうでしょうか

csharp

1NameValueCollection nv = System.Web.HttpUtility.ParseQueryString(string.Empty); 2nv.Add("ID", "hogehoge"); 3nv.Add("PASS", "foobar"); 4nv.ToString(); // ID=hogehoge&PASS=foobar

補足追加

JSONをパースしてクエリ文字列にする例

ライブラリにはDynamicJsonを用いました

csharp

1string jsonData = @"{ 2 ""filter"": { 3 ""date_query"": [ 4 { 5 ""column"": ""post_modified"", 6 ""after"": ""2018-04-03"", 7 ""before"": ""2018-04-04"", 8 ""inclusive"": true 9 } 10 ] 11 } 12}"; 13var json = DynamicJson.Parse(jsonData); 14var after = json.filter.date_query[0].after; 15var before = json.filter.date_query[0].before; 16 17var nv = System.Web.HttpUtility.ParseQueryString(string.Empty); 18nv.Add("After", after.ToString()); 19nv.Add("Before", before.ToString()); 20 21Console.WriteLine(nv.ToString()); 22// After=2018-04-03&Before=2018-04-04 23 24Console.ReadKey();

投稿2018/05/07 09:39

編集2018/05/08 23:46
MMashiro

総合スコア2378

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

go-kawano

2018/05/08 08:02 編集

ご回答ありがとうございます。 >JSONをパースしてNameValueCollectionに必要なものをAddしていくのはどうでしょうか 申し訳ございません。上記のイメージが出来ていないのですが、必要なパラメータは"after"と"before"で、この二つの値にAddするためにはどのようにコードを書いて良いかわからない状況です。大変恐縮ですが、ご教示頂けないでしょうか?
MMashiro

2018/05/08 23:47

既存のJSONを扱うためのライブラリを用いるのが一般的だと思います。 回答にDynamicJsonを用いたコード例を追記しましたので確認の程よろしくお願いいたします
go-kawano

2018/05/09 02:49

ご回答ありがとうございます。当方の質問の仕方が悪く、私がした質問と頂いた回答が齟齬しているみたいです。申し訳ございません。 自己解決致しましたので、そちらを確認していただければと思います。ご対応ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問