jansson_private.hとjansson.hに追加し、ビルドしました。debug assertion failedというエラーが出てしまいました。
JSONの処理2
Re: JSONの処理2
Re: JSONの処理2
janssonライブラリのヘッダに手を加えたのですか。Nect さんが書きました:jansson_private.hとjansson.hに追加し、ビルドしました。debug assertion failedというエラーが出てしまいました。
みけCATさんの真意は分かりかねますが、個人的には提供されたライブラリに関するヘッダーには手を付けるべきではないと思います。
手を加えても意味がないと思います。
それで動いたとして、今後janssonライブラリのバージョンが上がった時、どうするのでしょう?同じことするのでしょうか?
本来やりたい事が後回しになってしまいますよ。
追記でうまくいかない可能性が高いと書いてますが、そもそもやってはいけないことです。
もし私が今やっている仕事でそんなことしたら、同じ仲間から総スカン食らいますよ。それくらいのことをしてるのだと思ってください。
元に戻してくださいね。
最後に編集したユーザー へにっくす on 2013年12月23日(月) 21:50 [ 編集 1 回目 ]
written by へにっくす
Re: JSONの処理2
こちらでビルドしたDLL(と関連ファイル)です。
これで試してみてください。
これで試してみてください。
- 添付ファイル
-
- jansson.zip
- Jansson 2.5
- (87.23 KiB) ダウンロード数: 210 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: JSONの処理2
DLLファイルを使ったことがありません。ソリューションエクスプローラーのヘッダファイルからlibjansson-4.dllを追加すればいいのですか?みけCAT さんが書きました:こちらでビルドしたDLL(と関連ファイル)です。
これで試してみてください。
Re: JSONの処理2
予期しない不具合が発生する可能性があるため、ヘッダファイルの編集をしない方がいいということでしょうか?念のために、元の状態に戻しておきました。へにっくす さんが書きました:janssonライブラリのヘッダに手を加えたのですか。Nect さんが書きました:jansson_private.hとjansson.hに追加し、ビルドしました。debug assertion failedというエラーが出てしまいました。
みけCATさんの真意は分かりかねますが、個人的には提供されたライブラリに関するヘッダーには手を付けるべきではないと思います。
手を加えても意味がないと思います。
それで動いたとして、今後janssonライブラリのバージョンが上がった時、どうするのでしょう?同じことするのでしょうか?
本来やりたい事が後回しになってしまいますよ。
追記でうまくいかない可能性が高いと書いてますが、そもそもやってはいけないことです。
もし私が今やっている仕事でそんなことしたら、同じ仲間から総スカン食らいますよ。それくらいのことをしてるのだと思ってください。
元に戻してくださいね。
Re: JSONの処理2
http://visualstudiostudy.blog.fc2.com/blog-entry-6.html
dllの使い方はこれで大丈夫ですか?
元々使っていたjansson.hではなく、jansson.zipに入っているjansson.hを使うということですか?
dllの使い方はこれで大丈夫ですか?
元々使っていたjansson.hではなく、jansson.zipに入っているjansson.hを使うということですか?
Re: JSONの処理2
まず、DLLからlibファイル(インポートライブラリ)を作成してください。
dllファイルとdefファイルがあるディレクトリで というコマンドでできるらしいです。
(出典:http://blogs.konuma.org/blog/2006/11/dlllib_5de9/)
次に、作成したlibファイルを今使用しているプロジェクトにリンクします。
コンパイルし、dllを実行ファイル(exe)と同じディレクトリに置いてから実行します。
ヘッダは両方試してみてください。
dllファイルとdefファイルがあるディレクトリで というコマンドでできるらしいです。
(出典:http://blogs.konuma.org/blog/2006/11/dlllib_5de9/)
次に、作成したlibファイルを今使用しているプロジェクトにリンクします。
コンパイルし、dllを実行ファイル(exe)と同じディレクトリに置いてから実行します。
ヘッダは両方試してみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: JSONの処理2
まあ、そういうことです。Nect さんが書きました:予期しない不具合が発生する可能性があるため、ヘッダファイルの編集をしない方がいいということでしょうか?念のために、元の状態に戻しておきました。
みけCATさんがもうdllを提供してるようなので、後はその指示に従ってください。
技術ある人にデバッグ用のを作ってもらうのは仕事でもよくあることですので。
written by へにっくす
Re: JSONの処理2
エラーですみけCAT さんが書きました:まず、DLLからlibファイル(インポートライブラリ)を作成してください。
dllファイルとdefファイルがあるディレクトリで というコマンドでできるらしいです。
(出典:http://blogs.konuma.org/blog/2006/11/dlllib_5de9/)
次に、作成したlibファイルを今使用しているプロジェクトにリンクします。
コンパイルし、dllを実行ファイル(exe)と同じディレクトリに置いてから実行します。
ヘッダは両方試してみてください。
【実行結果とディレクトリ】
http://kie.nu/1z12
http://kie.nu/1z14
Re: JSONの処理2
libjansson-4.dll.libをlibjansson-4.libにリネームしてからリンクしてみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: JSONの処理2
修正しました。みけCAT さんが書きました:libjansson-4.dll.libをlibjansson-4.libにリネームしてからリンクしてみてください。
http://kie.nu/1z1d
Re: JSONの処理2
では、libjansson-4.dllをlibjansson-4.dll.dllにリネームしてみてください。
ビルドしなおす必要は無いはずです。
ビルドしなおす必要は無いはずです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: JSONの処理2
拡張子を省略して表示する設定になっているため、No69からlibjansson-4.dll.dllのままです。みけCAT さんが書きました:では、libjansson-4.dllをlibjansson-4.dll.dllにリネームしてみてください。
ビルドしなおす必要は無いはずです。
Re: JSONの処理2
libjansson-4.dll.dllをプロジェクトファイルがあるディレクトリにコピーしてみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: JSONの処理2
エラーになってしまいました。同じ手順で、1からやり直してみます。みけCAT さんが書きました:libjansson-4.dll.dllをプロジェクトファイルがあるディレクトリにコピーしてみてください。
【ディレクトリ】
http://kie.nu/1z1s
http://kie.nu/1z1q
Re: JSONの処理2
さかのぼって申し訳ないですけど、ふと思ったので。
拡張子を表示させた状態のjsonファイルを見せてもらうことはできますか。
フルパスを見せてもらうことはできますか。(ユーザ名含む)
後、途中うまくいっていたのに突然できなくなったと思うのですがあっていますか。
dllとlibを一から作り直すのも手かもしれません。
設定を一からし直すのも手かもしれません。
拡張子を表示させた状態のjsonファイルを見せてもらうことはできますか。
フルパスを見せてもらうことはできますか。(ユーザ名含む)
後、途中うまくいっていたのに突然できなくなったと思うのですがあっていますか。
dllとlibを一から作り直すのも手かもしれません。
設定を一からし直すのも手かもしれません。
Re: JSONの処理2
jsonファイルですトントン さんが書きました:さかのぼって申し訳ないですけど、ふと思ったので。
拡張子を表示させた状態のjsonファイルを見せてもらうことはできますか。
フルパスを見せてもらうことはできますか。(ユーザ名含む)
後、途中うまくいっていたのに突然できなくなったと思うのですがあっていますか。
dllとlibを一から作り直すのも手かもしれません。
設定を一からし直すのも手かもしれません。
http://kie.nu/1z2n
Re: JSONの処理2
dllファイルまで作ってもらったのに、ちゃんと動作しないですみません。みけCAT さんが書きました:No: 69の状態で、json2.exeをエクスプローラから直接実行するとどうなりますか?
Re: JSONの処理2
cmakeからやり直しています。トントン さんが書きました:さかのぼって申し訳ないですけど、ふと思ったので。
拡張子を表示させた状態のjsonファイルを見せてもらうことはできますか。
フルパスを見せてもらうことはできますか。(ユーザ名含む)
後、途中うまくいっていたのに突然できなくなったと思うのですがあっていますか。
dllとlibを一から作り直すのも手かもしれません。
設定を一からし直すのも手かもしれません。
Re: JSONの処理2
と思いきや、へにっくすさんとこでパスの指摘があったのでどうでも良かったですね。Nect さんが書きました:jsonファイルですトントン さんが書きました:さかのぼって申し訳ないですけど、ふと思ったので。
拡張子を表示させた状態のjsonファイルを見せてもらうことはできますか。
フルパスを見せてもらうことはできますか。(ユーザ名含む)
後、途中うまくいっていたのに突然できなくなったと思うのですがあっていますか。
dllとlibを一から作り直すのも手かもしれません。
設定を一からし直すのも手かもしれません。
http://kie.nu/1z2n
流し読み良くないですね。申し訳ないです。
Re: JSONの処理2
https://jansson.readthedocs.org/en/late ... arted.html
Jansson can be built with Visual Studio 2010 (and probably newer versions, too). とあります。visual studio2012では出来ないのかもしれません。もし、環境が原因ならパースの手段を変更します。「そこまでしてパースしたいならば、手動でやった方がいい」と言われるかと思います。しかし、膨大なデータを扱うため自動でパースをしたいので、jansson以外の方法で実現させるかもしれません。
協力してくださった方々ありがとうございました。特に、みけCATさんとへにっくすさんどうもありがとうございました。
まだ問題が未解決のため、解決は押しません。このトピックで続行します。
Jansson can be built with Visual Studio 2010 (and probably newer versions, too). とあります。visual studio2012では出来ないのかもしれません。もし、環境が原因ならパースの手段を変更します。「そこまでしてパースしたいならば、手動でやった方がいい」と言われるかと思います。しかし、膨大なデータを扱うため自動でパースをしたいので、jansson以外の方法で実現させるかもしれません。
協力してくださった方々ありがとうございました。特に、みけCATさんとへにっくすさんどうもありがとうございました。
まだ問題が未解決のため、解決は押しません。このトピックで続行します。
Re: JSONの処理2
「環境を変更」し、gccでJanssonを使用することを提案します。
私が使用しているのはWindows Vista / gcc4.7.2です。
私が使用しているのはWindows Vista / gcc4.7.2です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: JSONの処理2
もしくは、Perlを使うのもいいかもしれません。
JSON - search.cpan.org
昔自分が作った時に参考にしたサイトです。
JSON - JSONデータの解析 / Perlモジュール徹底解説 - サンプルコードによるPerl入門
[perl] JSONのエンコード - yref NOTE
JSON - search.cpan.org
昔自分が作った時に参考にしたサイトです。
JSON - JSONデータの解析 / Perlモジュール徹底解説 - サンプルコードによるPerl入門
[perl] JSONのエンコード - yref NOTE
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: JSONの処理2
Nectさんは、json.jsonファイルをUTF-8で保存するときにメモ帳を使ったようですが、メモ帳はBOMを付加します。
janssonライブラリはBOMをテキストデータとして読み込もうとするそうです。
janssonライブラリはBOMをテキストデータとして読み込もうとするそうです。
Re: JSONの処理2
ということは、No: 43で間違ったことを教えてしまったということですね。ISLe さんが書きました:Nectさんは、json.jsonファイルをUTF-8で保存するときにメモ帳を使ったようですが、メモ帳はBOMを付加します。
janssonライブラリはBOMをテキストデータとして読み込もうとするそうです。
申し訳ありませんでした。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: JSONの処理2
janssonライブラリを改造してBOMに対応させるのだとすれば、間違っているとは言えないでしょう。
その前にjson_loads関数を使って周りから固めていったほうが良い気がします。
UTF-8の日本語文字列を取り出せたとしても変換する必要があるのではないでしょうか。
その前にjson_loads関数を使って周りから固めていったほうが良い気がします。
UTF-8の日本語文字列を取り出せたとしても変換する必要があるのではないでしょうか。
Re: JSONの処理2
こんばんは。JSONファイルのパースを再開します。
今更なんですが、PHPでJSONを取得しているからパースもJSONでした方が手っ取り早いような気がします。実装方法わかりませんけど
今更なんですが、PHPでJSONを取得しているからパースもJSONでした方が手っ取り早いような気がします。実装方法わかりませんけど
Re: JSONの処理2
以下のアルゴリズムで、JSONファイルから必要なデータだけを抽出するためのプログラムを実装したいです。
【アルゴリズム】
1.JSONファイルのオブジェクトをパースする
2.(必要としている)オブジェクトのみにアクセスする
3.アクセスしたオブジェクトをtextファイルに書き込むなりする
JSONを取得するために使用したスクリプト
↓twitter APIからHTTPリクエストで取得したオブジェクトをstdclassに格納し、JSONファイルに書き込んだもの
【アルゴリズム】
1.JSONファイルのオブジェクトをパースする
2.(必要としている)オブジェクトのみにアクセスする
3.アクセスしたオブジェクトをtextファイルに書き込むなりする
JSONを取得するために使用したスクリプト
<?php
// ライブラリ読み込み
require_once('./UltimateOAuth.php');
// タイムゾーンを東京に設定
// (date関数をあとで使うならば必要)
//date_default_timezone_set('Asia/Tokyo');
// パラメータの設定
$ck = 'ck';
$cs = 'cs';
$at = 'at';
$as = 'as';
// UltimateOAuthオブジェクト生成
$uo = new UltimateOAuth($ck, $cs, $at, $as);
// ユーザータイムラインの取得。TwitterからJSON形式の文字列が返ってくるが、
// 自動的にjson_decodeに通されてstdClassオブジェクト化される
$statuses = $uo->get('statuses/user_timeline.json?screen_name=sanda1227&count=2');
//UTF-8にすることで文字化けを回避できる
header('Content-Type: text/html; charset=utf-8');
//stdClassの処理
//$js = new stdClass;
echo json_encode($statuses,JSON_UNESCAPED_UNICODE);
//ファイルの作成
//replace関数の使用
$filename = './tweet.json';
$fp=fopen($filename,'w');
//ファイルの書き込み、閉じる
fwrite($fp,sprintf(json_encode($statuses,JSON_UNESCAPED_UNICODE)));
//ファイルの出力
file_get_contents($filename);
fclose($fp);
?>
↓twitter APIからHTTPリクエストで取得したオブジェクトをstdclassに格納し、JSONファイルに書き込んだもの
[{"created_at":"Tue Dec 24 16:45:54 +0000 2013","id":4.1552374008083e+17,"id_str":"415523740080828416","text":"最近世の中(主に自分の周りの出来事)があきらかにおかしい。はやく電球を元に戻さなきゃ","source":"<a href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\">Twitter for Android<\/a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":152287295,"id_str":"152287295","name":"いなづき","screen_name":"sanda1227","location":"","description":"意識の高いつぶやきと批評と音楽やデザインのつぶやきをします。将来はフランスにすみたい。","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":18,"friends_count":123,"listed_count":1,"created_at":"Sat Jun 05 15:00:22 +0000 2010","favourites_count":0,"utc_offset":32400,"time_zone":"Irkutsk","geo_enabled":false,"verified":false,"statuses_count":14,"lang":"ja","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000866797589\/dp2OwBL6_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000866797589\/dp2OwBL6_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/152287295\/1386948029","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"lang":"ja"},{"created_at":"Mon Dec 23 15:30:05 +0000 2013","id":4.1514227092122e+17,"id_str":"415142270921224194","text":"睡眠習慣がしっかりしてる人は天才が多いイメージ","source":"<a href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\">Twitter for Android<\/a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":152287295,"id_str":"152287295","name":"いなづき","screen_name":"sanda1227","location":"","description":"意識の高いつぶやきと批評と音楽やデザインのつぶやきをします。将来はフランスにすみたい。","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":18,"friends_count":123,"listed_count":1,"created_at":"Sat Jun 05 15:00:22 +0000 2010","favourites_count":0,"utc_offset":32400,"time_zone":"Irkutsk","geo_enabled":false,"verified":false,"statuses_count":14,"lang":"ja","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000866797589\/dp2OwBL6_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000866797589\/dp2OwBL6_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/152287295\/1386948029","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":true,"follow_request_sent":false,"notifications":false},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"lang":"ja"}]
Re: JSONの処理2
パース失敗しました。echo $obj['text'];の行でエラーが発生しています。どのように修正すればいいでしょうか?
もう1つ質問です。C言語なんでも掲示板では、PHPやPerlなどについての質問は可能ですか?
もう1つ質問です。C言語なんでも掲示板では、PHPやPerlなどについての質問は可能ですか?
<?php
// ライブラリ読み込み
require_once('./UltimateOAuth.php');
// タイムゾーンを東京に設定
// (date関数をあとで使うならば必要)
//date_default_timezone_set('Asia/Tokyo');
// パラメータの設定
$ck = 'ck';
$cs = 'cs';
$at = 'at';
$as = 'as';
// UltimateOAuthオブジェクト生成
$uo = new UltimateOAuth($ck, $cs, $at, $as);
// ユーザータイムラインの取得。TwitterからJSON形式の文字列が返ってくるが、
// 自動的にjson_decodeに通されてstdClassオブジェクト化される
$statuses = $uo->get('statuses/user_timeline.json?screen_name=sanda1227&count=2');
//UTF-8にすることで文字化けを回避できる
header('Content-Type: text/html; charset=utf-8');
//stdClassの処理
//$js = new stdClass;
//これ必要ないかも?
echo json_encode($statuses,JSON_UNESCAPED_UNICODE);
//ファイルの作成
//replace関数の使用も検討
$filename = './tweet20.json';
$fp=fopen($filename,'w');
//ファイルの書き込み
fwrite($fp,sprintf(json_encode($statuses,JSON_UNESCAPED_UNICODE)));
//ファイルの出力
file_get_contents($filename);
//読み込み
$json = file_get_contents("tweet20.json");
//文字化け回避
$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
//エラー発生
echo $obj['text'];
fclose($fp);
?>
Re: JSONの処理2
$objがないことに気づき修正しました。相変わらずエラーです。
Nect さんが書きました:パース失敗しました。echo $obj['text'];の行でエラーが発生しています。どのように修正すればいいでしょうか?
もう1つ質問です。C言語なんでも掲示板では、PHPやPerlなどについての質問は可能ですか?
<?php // ライブラリ読み込み require_once('./UltimateOAuth.php'); // タイムゾーンを東京に設定 // (date関数をあとで使うならば必要) //date_default_timezone_set('Asia/Tokyo'); // パラメータの設定 $ck = 'ck'; $cs = 'cs'; $at = 'at'; $as = 'as'; // UltimateOAuthオブジェクト生成 $uo = new UltimateOAuth($ck, $cs, $at, $as); // ユーザータイムラインの取得。TwitterからJSON形式の文字列が返ってくるが、 // 自動的にjson_decodeに通されてstdClassオブジェクト化される $statuses = $uo->get('statuses/user_timeline.json?screen_name=sanda1227&count=2'); //UTF-8にすることで文字化けを回避できる header('Content-Type: text/html; charset=utf-8'); //stdClassの処理 //$js = new stdClass; //これ必要ないかも? echo json_encode($statuses,JSON_UNESCAPED_UNICODE); //ファイルの作成 //replace関数の使用も検討 $filename = './tweet20.json'; $fp=fopen($filename,'w'); //ファイルの書き込み fwrite($fp,sprintf(json_encode($statuses,JSON_UNESCAPED_UNICODE))); //ファイルの出力 file_get_contents($filename); //読み込み $json = file_get_contents("tweet20.json"); //文字化け回避 $json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); //エラー発生 echo $obj['text']; fclose($fp); ?>