質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

XMLパーサ

XML文書のテキストデータだけを抜き出して、アプリケーションソフトが利用しやすい形式に変換させるソフトウェアをXMLパーサと呼びます。

Q&A

解決済

2回答

4001閲覧

C#Json(xml)の扱い方。オブジェクト化せずに一つずつたどりたい

ElecDove

総合スコア254

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

XMLパーサ

XML文書のテキストデータだけを抜き出して、アプリケーションソフトが利用しやすい形式に変換させるソフトウェアをXMLパーサと呼びます。

0グッド

1クリップ

投稿2015/09/18 08:25

お世話になります

C#でJsonを読み込むときよく見かけるサンプルソースなどは、Jsonの構造にマッチするクラスを用意しておいて、一気にオブジェクト化する方法を見かけます。

私がPerlを扱う時は、JsonをPerlの変数に入れて、ループを回したり、要素の名前にアクセスしたり、と一つずつたどっていきます

例)

Json

1{ 2 "scalar":"これはスカラ変数", 3 "array":[ 4 100,200,300,400 5 ], 6 "hash":{ 7 "hoge":"fuga", 8 "hogehoge":"fugafuga" 9 } 10}

※↑のJsonは手打ちなのでタイポとかあったらごめんなさい

これをPerlで処理するときは例えば配列を読み出したい時は
$jsontextに文字列としてのJsonデータが入っているとして

Perl

1 2$jsondata = JSON->new()->decode($jsontext); 3 4for(@{$jsondata->{'array'}}){ 5 print $_; 6}

こんな感じでアクセスすると思います。

C#でもこんな感じで、事前にひな形となるクラスを用意して、オブジェクト化、して…
ということをせずに、一つずつたどっていくような感じで読みだすことはできないでしょうか。

また、例としてJsonをあげましたが、XMLでも同様に一つずつ呼び出していきたいな、なんて思っていたりします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

動的型付けをできるdynamicを活かした以下の様なライブラリも有ります。
DynamicJson - Home

が、Tak1waさんの仰るとおり雛形を容易した方がいいと思います。

できればシリアライズ/デシリアライズの機能を使ってオブジェクトからオブジェクトへシームレスに変換するのが望ましいと思います。

投稿2015/09/18 08:55

sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こんにちは。

PHPの連想配列的に扱いたいという意図で良いですよね?
JSON.NETのJObject.Parseが一番簡単そうです。

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6 7namespace ConsoleApplication8 8{ 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 var json = Newtonsoft.Json.Linq.JObject.Parse(GetJsonString()); 14 Console.WriteLine(json["scalar"]); 15 Console.WriteLine(json["array"][2]); 16 Console.ReadKey(); 17 } 18 19 static string GetJsonString() 20 { 21 return @"{ 22 ""scalar"":""これはスカラ変数"", 23 ""array"":[ 24 100,200,300,400 25 ], 26 ""hash"":{ 27 ""hoge"":""fuga"", 28 ""hogehoge"":""fugafuga"" 29 } 30 }"; 31 } 32 } 33}

#上記のサンプルコンソールアプリケーションはNuGetでJSON.NETを追加してください。


C#は型づけが強力な言語ですので、
できればシリアライズ/デシリアライズの機能を使ってオブジェクトからオブジェクトへシームレスに変換するのが望ましいと思います。

投稿2015/09/18 08:40

編集2015/09/18 08:42
Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ElecDove

2015/09/18 09:00

>C#は型づけが強力な言語ですので、 できればシリアライズ/デシリアライズの機能を使ってオブジェクトからオブジェクトへシームレスに変換するのが望ましいと思います。 詳しいことは私にはよくわからないのですが、その方が良いのであればそれに倣ってみようかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問