LoginSignup
2
2

More than 5 years have passed since last update.

LabVIEW Tips: LabVIEW でJSON

Last updated at Posted at 2016-03-06

LabVIEW でJSON

LabVIEW2014からJSON文字列への変換がサポートされました。
(他の言語を使っている方からは「なにを今さら」といわれそうですが。)
とはいっても、任意のデータをJSON文字列に変換と、その逆変換の関数が用意されただけなんですが、Webサービスとの絡みもあって、今後はLabVIEW界隈でも使う機会が増えるかもしれません。

JSON文字列への変換・逆変換

LabVIEWのJSON変換は、
項目と値をひとつずつJSONオブジェクトにセットしていく、というやりかたではなく、パラメータで渡されたクラスタなどのデータを、そのままJSON形式文字列に変換するものです。
逆変換する場合は、データ型を指定してJSON文字列から指定されたデータ型に変換します。なので、文字列からパースする場合は、あらかじめデータ型がわかってないと使えません。
項目の名前だけでなく、順番や個数も合致している必要があります。

また、配列はLabVIEW独自拡張したフォーマットになるようです。

JSON文字列に変換(Flatten To JSON String)

ToJSON.png

JSON文字列から変換(Unflatten From JSON)

FromJSON.png

欠点

1.文字コードがUTF-8

JSON文字列の文字コードはUTF-8なので、日本語が混ざっている場合は注意。

2.クラスタメンバーの並び

LabVIEWのUnFlatten JSON関数は、JSON文字列から逆変換する時に、クラスタ(構造体)の項目の順序とJSON文字列の項目の並びが一致させないと、エラーになります。
他の言語で、JSONデータをdumpして文字列出力する時の並びは、ランダムかもしくはソートされて出力されてきますので、これをLabVIEW側で受け取って変換しようとするとエラーになります。
面倒でも、LabVIEW側のクラスタ(構造体)の項目の順序に合うように並べてあげる必要があります。
もしくは、LabVIEW側のクラスタ(構造体)の各項目の順序をラベルテキストの昇順になるようにする?

用途

おもな用途として、WebサービスAPIのPOSTパラメータや応答の出力にJSON形式を使うことが多いようです。
LabVIEWでもWebServiceAPIの応答の出力形式にJSON形式を指定できます。
それ以外に、ログ出力メッセージや設定ファイルやなどにも使えると思います。

ログメッセージ出力

LabVIEWのJSON変換は、1行出力なので、これを逆に利用してエラークラスタなど複雑な構造(クラスタ)のデータを、逐一書式指定すること無しに1行の文字列に変換してログに出力できます。
以下の例はエラークラスタの文字列変換例です。
Sample_ToJSON.png

設定ファイル

たいてい、INI形式を使っていると思いますが、
LabVIEW2014 のcRIO(RealTimeLinux)ではINI形式保存・読み込みに不具合があって使えなかったりするので、その代用にできます。
LabVIEW XML形式でもいいのですが、JSONの方が簡潔なので見やすいです。項目が少ない場合は、JSONで十分ことたりると思います。
難点は、JSON文字列に変換した文字列が折り返しの1行出力なので、項目が多いと、だらだらと長い1行になって可読性にかけることです。出力した文字列のフォーマット(4タブでインデントなど)が指定できるといいんですが。
*)文字列がUTF8なのでエディタで編集する場合は要注意です。

関連記事

LabVIEW SJIS <-> UTF-8 文字コード変換
LabVIEW Tips: デバッグログ

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2