C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

キー名なしのJSONデータを各々取得したい /aiten09 (19/10/31(Thu) 21:38) #92820
Re[1]: キー名なしのJSONデータを各々取得したい /Hongliang (19/10/31(Thu) 21:51) #92821
Re[1]: キー名なしのJSONデータを各々取得したい /WebSurfer (19/10/31(Thu) 22:44) #92823
  └ Re[2]: キー名なしのJSONデータを各々取得したい /WebSurfer (19/11/01(Fri) 18:34) #92844
    └ Re[3]: キー名なしのJSONデータを各々取得したい /WebSurfer (19/11/01(Fri) 18:47) #92845
      └ Re[4]: キー名なしのJSONデータを各々取得したい /aiten09 (19/11/02(Sat) 20:42) #92853 解決済み


親記事 / ▼[ 92821 ] ▼[ 92823 ]
■92820 / 親階層)  キー名なしのJSONデータを各々取得したい
□投稿者/ aiten09 (4回)-(2019/10/31(Thu) 21:38:23)

分類:[.NET 全般] 

お世話になっております。

[[235324,"108.158","108.161","108.152","108.158"],
[235325,"108.157","108.158","108.15","108.152"],
[235326,"108.153","108.163","108.151","108.159"]
,[235627,"108.157","108.169","108.157","108.162"]]
※[]の数は不定

上記のような、キー名なしのJSONデータを例のように
各々分離させたいのですが、可能でしょうか?

(例)
int iData=235627;
string sBuf1="108.157";
string sBuf2="108.169";
string sBuf3="108.157";
string sBuf4="108.162";
-----

キー名ありですと、プロパティを使えば簡単に取得・分離
できるのですが、専用のメソッドを作るべきでしょうか・・・。

お手数をおかけ致しますが
宜しくお願い致します。









[ □ Tree ] 返信 編集キー/

▲[ 92820 ] / 返信無し
■92821 / 1階層)  Re[1]: キー名なしのJSONデータを各々取得したい
□投稿者/ Hongliang (911回)-(2019/10/31(Thu) 21:51:57)
できるかと言われればもちろんできますが。
どこに詰まってるのかが分かりません。
どのデシリアライザを使ってるのか知りませんが、デシリアライズすれば配列の配列になるでしょうから順次読み取っていくだけでは?
[ 親 92820 / □ Tree ] 返信 編集キー/

▲[ 92820 ] / ▼[ 92844 ]
■92823 / 1階層)  Re[1]: キー名なしのJSONデータを各々取得したい
□投稿者/ WebSurfer (1962回)-(2019/10/31(Thu) 22:44:46)
No92820 (aiten09 さん) に返信

例えば Newtonsoft.Json を使うと List<List<object>> 型のオブジェクトにデシリアライズ
できるはずです。

お試しください。
[ 親 92820 / □ Tree ] 返信 編集キー/

▲[ 92823 ] / ▼[ 92845 ]
■92844 / 2階層)  Re[2]: キー名なしのJSONデータを各々取得したい
□投稿者/ WebSurfer (1964回)-(2019/11/01(Fri) 18:34:18)
Newtonsoft.Json を使って List<List<object>> 型のオブジェクトにデシリアライズ
してみました。jsonText4 というのは質問にあった JSON 文字列です。

var desObj = JsonConvert.DeserializeObject<List<List<object>>>(jsonText4);

foreach (List<object> o in desObj)
{
    Console.WriteLine($"{o[0]}, {o[1]}, {o[2]}, {o[3]}, {o[4]}");
}

// 結果は:
// 235324, 108.158, 108.161, 108.152, 108.158
// 235325, 108.157, 108.158, 108.15, 108.152
// 235326, 108.153, 108.163, 108.151, 108.159
// 235627, 108.157, 108.169, 108.157, 108.162


MiniJSON を使っても同じ結果が得られます。

var desObj = Json.Deserialize(jsonText4);

[ 親 92820 / □ Tree ] 返信 編集キー/

▲[ 92844 ] / ▼[ 92853 ]
■92845 / 3階層)  Re[3]: キー名なしのJSONデータを各々取得したい
□投稿者/ WebSurfer (1965回)-(2019/11/01(Fri) 18:47:05)
MiniJSON の方はキャストが必要でした。

var desObj2 = (List<object>)Json.Deserialize(jsonText4);

foreach (List<object> o in desObj2)
{
    Console.WriteLine($"{o[0]}, {o[1]}, {o[2]}, {o[3]}, {o[4]}");
}

// 結果は:
// 235324, 108.158, 108.161, 108.152, 108.158
// 235325, 108.157, 108.158, 108.15, 108.152
// 235326, 108.153, 108.163, 108.151, 108.159
// 235627, 108.157, 108.169, 108.157, 108.162

[ 親 92820 / □ Tree ] 返信 編集キー/

▲[ 92845 ] / 返信無し
■92853 / 4階層)  Re[4]: キー名なしのJSONデータを各々取得したい
□投稿者/ aiten09 (5回)-(2019/11/02(Sat) 20:42:37)
皆さん、色々とご丁寧に教えて下さり、
誠に有難うございました。

無事に取得できました。
解決済み
[ 親 92820 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -