JSONの処理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Nect

JSONの処理

#1

投稿記事 by Nect » 12年前

PHPとTwitteroauthの連携でTwitter API1.1から取得したJSONオブジェクトをテキストファイルに保存しました。そのテキストファイル内のJSONオブジェクトをJANSSONでパースし、パースされたデータに対してデータマイニングを行おうとしています。

json_t *json_loadf(FILE *input,size_t flags,json_error_t *error)というJANSSONの関数をソースコード上に記述し、ビルドを行いました。そして、ビルドが失敗してしまいました。

JANSSONを用いたソースコードの作成が上手くいかず、3週間以上も足止めを食らっています。JANSSONに拘る理由はなく、異なるアプローチでも目的を達成できればいいです。ご協力お願いします。

開発環境
・JANSSON2.5
・microsoft visual studio express 2012 for windows desktop
・PHP5.2.4
・windows8
.cmake 2.8.12.1(JANSSONのファイルを生成するために必要みたいです)

↓パースを行うためのソースコード(仮)

コード:

  
 #define _CRT_SECURE_NO_WARNINGS
 #include <stdio.h>
 #include <string.h>
 #include <jansson.h>

     int main(void){

     FILE *file;
     json_error_t error;

     fopen_s(&file,"test.text","r");

     json_loadf(file, 0, &error);

     fclose(file);

     return 0;
 }

コード:

<?php

    //ライブラリ読み込み
    require_once('./UltimateOAuth.php');

    //タイムゾーンを東京に設定
    //(date関数をあとで使うならば必要)
    //date_default_timezone_set('Asia/Tokyo');

    // パラメータの設定
    $ck = 'consumerkey';
    $cs = 'sonsumersecret';
    $at = 'accesstoken';
    $as = 'accesssecret';

    // UltimateOAuthオブジェクト生成
    $uo = new UltimateOAuth($ck, $cs, $at, $as);

    //ユーザータイムラインの取得。TwitterからJSON形式の文字列が返ってくるが、
    //自動的にjson_decodeに通されてstdClassオブジェクト化される
    $statuses = $uo->get('statuses/user_timeline');

    //UTF-8にすることで文字化けを回避できる
    header('Content-Type: text/html; charset=utf-8');

    //stdClassの処理
    //$js = new stdClass;
    echo json_encode($statuses,JSON_UNESCAPED_UNICODE);

    //ファイルの作成
    $filename = './json.text';
    $fp=fopen($filename,'w');

    //ファイルの書き込み、閉じる
    fwrite($fp,sprintf(json_encode($statuses,JSON_UNESCAPED_UNICODE)));

    //ファイルの出力
    file_get_contents($filename);

    fclose($fp);
 
?>
 
json_loadf(file, 0, &error);から//json_loadf(file, 0, &error);に修正したところエラーが解消(?)されました。json_loadf(file, 0, &error);に問題があるということなのでしょうか?このままではJSONのパースを行うことができません。

【エラー】
・json_loadf(file, 0, &error);の場合
http://kie.nu/1yD1

・//json_loadf(file, 0, &error);の場合
http://kie.nu/1yD6

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: JSONの処理

#2

投稿記事 by h2so5 » 12年前

Janssonのスタティックライブラリをリンクする必要があります。

Nect

Re: JSONの処理

#3

投稿記事 by Nect » 12年前

jansson.libを入手し、ヘッダファイルに追加したらビルドが成功しました。

リンクについての知識がないため、http://kie.nu/1yD1の問題を自分で解決することができませんでし ... と判断できたのですか?また同じ問題で躓かないようにするために知りたいです。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: JSONの処理

#4

投稿記事 by h2so5 » 12年前

エラーメッセージで検索すれば似たような質問と解答がたくさん出てきます。

Nect

Re: JSONの処理

#5

投稿記事 by Nect » 12年前

わかりました。回答ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る