By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. 備忘録としてメモ。 5 / クリップ VBAのJsonConverterを使ってJSONファイルを作成し、下記サイトを参考にHTTP通信でファイルを送ったのですが何故か&が含まれているJSONファイルを送信するとバグってしまうのですがどのように対応を行えばいいでしょうか?※バグってしまうというのは、正常ではないJSONファイルが という処理を行いたい。, JSONファイルには日本語も含まれているので、 ExcelマクロからのデータアクセスでVBAからはActiveXエラーが出ます(VB6からはできます... Excel vba のエラー「オブジェクト変数またはWithブロック変数が設定されていません」を解決... 【Access】レコードセットに渡すSQLに「LIKE検索」を使うと、レコードセットからExcel出... Excel VBAよりAccessのエクスポート機能(DoCmd.TransferSpreadshe... Access VBA  Access内のテーブルに格納した文字列を変数として使用し、SQLサーバのデ... 回答 https://doruby.jp/users/ookouchi/entries/201708-EXCEL-VBA-JSON-API-MSXML2-XMLHTTP, データ生成時までは問題ないと思っていたのですが、 | 日本語を含む配列をjson_encodeすると、日本語部分が文字コードで表示されてしまう。 0 / クリップ Python. Right $ ("0000" & VBA. 結論から先に書きますが、Ajax通信で日本語(SJIS)が文字化けする場合は、MimeTypeを上書きすれば文字化けしません!! Ajax通信で日本語が文字化け 文字化けの原因 対応方法 JSONデータの場合 最後に Ajax通信で日本語が文字化け 現在のプロジェクトがStruts2使っていて、DBのデータを表示してま… VBAでJSONを読み込んでみる . JSON ExcelVBA. エクセルVBAのLine Input命令でUTF-8のCSVファイルを取り込むと文字化けを起こします。今回は、ADODB.Streamを使ってUTF-8のCSVファイルを取り込む方法についてお伝えします。 What is going on with this article? Excel(おそらくその他のOfficeアプリでも同様だと思う)のVBA開発画面が文字化けしている時はシステムロケールを日本語に設定すると直る。以下、Windows10での設定手順。文字化けの箇所コントロールパネルを開いて「日付、時刻、また 平成22年国税調査 速報集計(0003033021)を例として、取得してみました。, urlib.request.urlopenがbyte型を返すことに注意(参考; http://docs.python.jp/3/library/urllib.request.html)。, 下記のようにutf-8にデコードすると日本語のままデータが取得できますが、このようにデコードした場合でもERROR_MSG":"\u6B63\u5E38\u306B\u7D42\u4E86\u3057\u307E\u3057\u305F\u3002"とUnicodeエスケープされてしまう場合があったのですが、そんなときにはunicode-escapeを指定することで、回避していました。(正直、違いがわからない)。, 一方で、出力したjsonファイルの方は、Unicodeエスケープされてしまいます。 VBA-tools/VBA-JSON, 「api」というのがJSONを受け取るAPIであれば、普通対応している思うのでそのまま送信してしまえば問題無いでしょう。. By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. Link -> https://doruby.jp/users/ookouchi/entries/201708-EXCEL-VBA-JSON-API-MSXML2-XMLHTTP, なお、日本語文字をVBA-JSONでコンバートする場合にはjson_Encode関数のSelect Caseの最後を以下のように書き換えるようにしましょう。, 下記に配列と非配列を表示するためのサンプルコードを示してみました。 使用環境:Win10日本語版 ent sp1 64bit; office 2016; 入力はOSデフォルト日本語IME; unicode日本語。 現象:作成したexcelのマクロについて、使用環境のVBAエディタの中で、漢字だけの文字化けが発生さ … これはjson.dumpsの引数であるensure_asciiがデフォルトでTrueになっており、入ってくるデータをエスケープする仕様になっていることに起因します。, 従って、それをFalseにすることで、ファイルに書き出したときも日本語が保つことができます。, hermesianさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog ※バグってしまうというのは、正常ではないJSONファイルが生成されてしまうという意味です。, 【参考サイト】 1 / クリップ VBAでJSONをパースする際にはCreateObject("ScriptControl")を使用するのが一般的でしょう。(サンプル例) 何か対策等あるのでしょうか。 JSONファイルを作成し、下記サイトを参考に 1 / クリップ 「id」を渡すと「5」、 StringEntity entity = new StringEntity(json, "UTF-8"); APIを使用するに歳しては、まずユーザ登録をして、アプリケーションIDを発行しなくてはなりません。, 提供されている機能としては5種類あります。 More than 1 year has passed since last update. json_encode()を使ってphpの配列やオブジェクトをjsonに変換しますが、UTF-8などのUnicodeの場合、json結果の日本語がUnicodeのままになります。それを、日本語で表示するようにします。かんたんです。説明は3分もかかりません。 2 / クリップ 0, 回答 (この至極単純なコードに至るのに、あれこれ嵌まって半日近く掛かりました。ローカルウィンドウにKeyの文字しか書いて無くて最初何じゃこりゃと思いましたし。), パースしたデータはDictionary型として帰ってきます。なお、内部の配列はCollection型です。, 応用として使えそうな数種類かサンプルコードを付記します。実際にVBAに移植しコメントとの結果を比べてください。なお、Parse("member").COUNTは1から始まるので他の配列に代入するときには注意が必要です。, 【VBA】JSONファイルの内容をEXCELファイルに読み込む 備忘録としてメモ。 やりたいことは、REST API提供されているデータを取得して、保存することです。 また使用しているpythonの環境は、以下。 python --version Python 3.4.3 :: Anaconda 2.2.0 (x86_64) 使用するデータは、e-StatのAPIから取得します。 APIを使用す … Help us understand the problem. 0, 回答 日本語を含む配列をjson_encodeすると、日本語部分が文字コードで表示されてしまう。 そんな場合は、json_encodeの第二引数にJSON_UNESCAPED_SLASESを入れると日本語でjsonを返してくれる。(バージョン5.4.0以上のみ) By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. 0, 【募集】 jsonを送りたいので、headerは "Content-type", "application/json; charser=UTF-8" を設定します。 デフォルトですとどうやら日本語が「??? 今までは私も解説がわかりやすくコードも読みやすいことからCreateObjectを使ってパースをしていましたが、必要に迫られて導入したところ案ずるより産むが易しで拍子抜けするくらいに簡単にできました。, かつては、Googleのサイト内でソースコードがホスティングされていたようですが、現在は、GitHubに最新版のソースがあります。 HTTP通信でファイルを送ったのですが Hex $ (json_AscCode), 4) End Select. そしてその分けられた配列数をUBound関数で調べて、その値を使ってfor文を回せばいい。. ?」と文字化けしてしまうので「charset=UTF-8」は入れておきましょう。 そしてjsonを送りたいときも. 0, 回答 主に使いそうなものとしては、下記の2点になるかと思います。, 今回は、2点目の機能を利用。 ブログを報告する, この記事はFujitsu Advent Calendarの20日目です。 Swaggerとは…, CrossletというLeafletの地図表示上と、Crossfilterを連動させ…, "http://api.e-stat.go.jp/rest/2.0/app/json", "%s/getStatsData?appId=%s&statsDataId=%s", http://docs.python.jp/3/library/urllib.request.html), LeafletとCrossletを組み合わせたCrossLetで日本の人口統計データを表示する. やりたいことは、REST API提供されているデータを取得して、保存することです。, 使用するデータは、e-StatのAPIから取得します。 どのように対応を行えばいいでしょうか? APIで取得したjsonが文字化けする . 「age」を渡すと「20」が、 ... JSONファイルには日本語も含まれているので、 文字コードを選択できるADODBを呼び出す方法を使った。 読み込んだ内容をパースする. json とよく比較されるフォーマットに yaml がありますが、実は json は yaml のサブセットだったりします。 文字コードは utf-8 固定。 バイトオーダーマーク (bom) を先頭につけてはならない。 1, 回答 UTF-8の文字コードで受け取った物を文字化け無しで表示したいのですが、どうやったらよいのかわかりません。 メールを受信した際に"text/plain; charset=utf-8"となっているのですが、 内部でみると日本語が文字化けしてしまっているのです。 新卒サイバーエージェントからフリーランス。 Non characters -> convert to 4-digit hex, https://doruby.jp/users/ookouchi/entries/201708-EXCEL-VBA-JSON-API-MSXML2-XMLHTTP, you can read useful information later efficiently. Why not register and get more from Qiita? 何故か&が含まれているJSONファイルを送信するとバグってしまうのですが 広告/小売/教育など幅広いドメインのデータビジネスを経験しています。. JSON形式の文字データの変換方法で悩んでいます。(WEB上のAPIを叩いて取得してきたデータです)例えば、、、\u30aa\u30c1\u30b2\u30fc\u30c6\u30ce\u30bb\u30ebこの様な文字列です。他のAPIで得られた文字データの場合、、、Encode::fro Why not register and get more from Qiita? 返ってくるのは想像できた。, 何となく既視感あるなと思っていたが、やっと似たものを思い出す。 文字コードを選択できるADODBを呼び出す方法を使った。, 値として「name」を渡してやることで、「name」の右辺である「山田」という値を取り出している。 VBAのJsonConverterを使って しかし、この手段は32bit限定であり、64bitでは使用できません。将来性を考えたら他の手法を用いるべきであり、JSONパースのライブラリーとして一般的なVBA-JSONを使ってみることにしました。, Excel2010のサポートもそろそろ来年にきれるし、必要なときに必要なだけバラバラに買っていたのをやめて、Office365にバージョンアップしようとしたら64bit版がインストールされてしまって、JSONを使えなりました。なお、"HtmlFile"なる手段を使うやり方もあるようですが、IEやedgeの将来性を考えたらこれもつかいたくありません。, なら、VBA-JSONしかないとなりましたが、 teratailを一緒に作りたいエンジニア, こちらの方で、そのまま送ってみてapiサーバ側で問題なくjsonをパースすることが出来ました。, '"SKS2\u677F\uFF7D\uFF77\uFF9D\uFF8A\uFF9F\uFF7D"'. なお、日本語文字をVBA-JSONでコンバートする場合にはjson_Encode関数のSelect Caseの最後を以下のように書き換えるようにしましょう。 Case 0 To 31, 127 ' Non characters -> convert to 4-digit hex json_Char = "\u" & VBA. PHPでは下記のようになる。, 配列値の上の階層?までをCallByNameして、その値を「,」でSplitで分割する。 VBA-tools/VBA-JSON 「api」というのがJSONを受け取るAPIであれば、普通対応している思うのでそのまま送信してしまえば問題無いでしょう。 参考として、以下の方法でSKS2板スキンパスという文字列が得られます。 0, 【募集】 データ基盤構築や、ビッグデータを扱うシステム構築が得意です。 サンプルコード 基本. What is going on with this article? 1 / クリップ VBAでWeb API(REST API)を使うときの作法 3 / クリップ そう、連想配列だ。, ちなみに個人的にPHPでJSONを扱うときの連想配列を想像するのがとても理解しやすかった。, 最初に前提として提示したJSONで、一つ目のcontentsの中身を取り出したい場合、 teratailを一緒に作りたいエンジニア. 仮想通貨自動取引ツール. What is going on with this article? ' "function jsonParse(s){ return eval('('+s+')');}", 【開発コンテスト】スモールビジネス の「困った」をアイデアと技術で「解決」しませんか, you can read useful information later efficiently. Help us understand the problem. そんな場合は、json_encodeの第二引数にJSON_UNESCAPED_SLASESを入れると日本語でjsonを返してくれる。(バージョン5.4.0以上のみ), フリーランスのデータエンジニアです。 1.モジュールがやたら長くて敷居が高いイメージ 0, 回答 Why not register and get more from Qiita? Link -> https://github.com/VBA-tools/VBA-JSON, VBA-JSONをURLからDLし標準モジュール[JsonConverter.bas]を導入したいOfficeのファイルにインポートをしてください。今回のようにパースの場合にはParseJson関数を使用します。ConvertToJson関数はVBAでJSONを生成する関数です。わかりやすい解説がありますのでそちらをご覧ください。 2.日本語の解説がわかりずらいなどということから Help us understand the problem. you can read useful information later efficiently. お手数をおかけしますが、よろしくお願いいたします。, teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。, 評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。, 上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。, JSON変換ルーチンの問題ではなくapplication/x-www-form-urlencodedで送信する際に適切なエンコードを行っていないため、&がパラメーター区切りとみなされてしまっている状況ではないかと思われます。, VBAでHttpRequestのSendメソッドを使った際にタイムアウトエラーが起こる, VBAでAPIのPOST送信を実施したいがVBAでのボディに記載して送信方法がわかりません。, 回答 https://github.com/VBA-tools/VBA-JSON JSONパース自体はこちらを参考にさせてもらった。 ExcelでJSONを扱う場合のつまずきポイント, まず前提として、外部ファイルであるJSONファイルを開き読み込んでシートに一覧出力する、