読者です 読者をやめる 読者になる 読者になる

Haruyuki Mohri

毛利春幸のブログです。

TJSONObject::ParseJSONValue()で文字列からTJSONArrayにする

TJSONObject::ParseJSONValue()

文字列をTJSONObjectなどに変換してくれる。
TJSONArrayにも変換可能。

JSONファイル

//こんなJSONがあったとして
UnicodeString us = L"[{\"Key\":\"00\",\"n\":\"会社名\"},{\"Key\":\"01\",\"n\":\"ABC社\"}]";

Delphiの場合

uses System.JSON;
var
  ja: TJSONArray;
  s: String;
begin
  ja := TJSONObject.ParseJSONValue(us) as TJSONArray;
  s := ja.Items[0].GetValue<TJSONValue>('n').Value; {こんな感じで文字を取れる}
end;

C++Builderの場合

#include <System.JSON.hpp>
#include <memory>
std::shared_ptr<TJSONArray> __fastcall TForm1::StrToJson(const UnicodeString stValue)
{
    std::shared_ptr<TJSONArray> ja((static_cast<TJSONArray*>(TJSONObject::ParseJSONValue(stValue))));

    //ここで別名つけてみる
    TJSONObject* jo1 = (static_cast<TJSONObject* >(ja->Get(0) ) );
    String stValue1 = jo1->GetValue("n")->Value() ;

    //これでもいい
    String stValue2 = (static_cast<TJSONObject* >(ja->Get(0) ) ) ->GetValue("n")->Value() ;

    return ja;
}

f:id:mojeld:20160617103731j:plain