質問するログイン新規登録

回答編集履歴

4

修正

2016/10/11 01:55

投稿

ishi9
ishi9

スコア1294

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  であればクラスにしてからプロパティを読み取るなんてまどろっこしいことしなくても直にjson文字列から処理できますよ。
5
5
  以下のコードで全プロパティ(深い階層含む)を取れます。
6
6
 
7
- ```
7
+ ```C#
8
8
  string json; // JSON文字列
9
9
  var root = (JContainer)JToken.Parse(json);
10
10
  var log = root.DescendantsAndSelf()

3

サンプルコードを要望に沿ったものに修正

2016/10/11 01:55

投稿

ishi9
ishi9

スコア1294

answer CHANGED
@@ -7,9 +7,9 @@
7
7
  ```
8
8
  string json; // JSON文字列
9
9
  var root = (JContainer)JToken.Parse(json);
10
- var properties = root.DescendantsAndSelf()
10
+ var log = root.DescendantsAndSelf()
11
11
  .OfType<JProperty>()
12
- .Select(p => p.Name)
12
+ .Select(p => p.Name + ": " + p.Value) // 「task_id: 10」という風になる
13
13
  .ToArray();
14
14
  ```
15
15
 

2

修正

2016/10/11 01:54

投稿

ishi9
ishi9

スコア1294

answer CHANGED
@@ -1,8 +1,8 @@
1
- クラスのメンバをリフレクションを使って取り出す方法は非常に重いのであまりおすすめできません。
1
+ クラスのプロパティをリフレクションを使って取り出す方法は非常に重いのであまりおすすめできません。
2
2
 
3
3
  json.netですよね?
4
4
  であればクラスにしてからプロパティを読み取るなんてまどろっこしいことしなくても直にjson文字列から処理できますよ。
5
- 以下のコードで全メンバ(深い階層含む)を取れます。
5
+ 以下のコードで全プロパティ(深い階層含む)を取れます。
6
6
 
7
7
  ```
8
8
  string json; // JSON文字列

1

補足追加

2016/10/11 01:48

投稿

ishi9
ishi9

スコア1294

answer CHANGED
@@ -11,4 +11,8 @@
11
11
  .OfType<JProperty>()
12
12
  .Select(p => p.Name)
13
13
  .ToArray();
14
- ```
14
+ ```
15
+
16
+ 階層別に格納したい等もいくらでも対応できるので、いろいろ調べてみると今後もなにかと応用がききます。
17
+ 公式ドキュメントは参考になるので是非読んでみてください。全部英語ですが、ほとんどコードなのできっと問題なく読めます。
18
+ [Querying JSON with LINQ](http://www.newtonsoft.com/json/help/html/QueryingLINQtoJSON.htm)