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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

JSON

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

Q&A

解決済

2回答

2059閲覧

C# json デシリアライズ Computer Vision api

hamaa

総合スコア45

C#

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

JSON

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

0グッド

0クリップ

投稿2017/09/05 04:56

jsonデータについて初心者です。

json デシリアライズ はネットサーフィンすると少し出てきますが
深い階層のものがわかりずらく
classにする部分などが省略されていたり
シリアライズと一緒に説明されていてわかりずく困っています。

下のデータのcaptions中項目のtextやconfidence値をとりたいのですが
どうやって読み解いたら良いかわかりません。

Newtonsoft.Json
System.Runtime.Serialization
をつかったりしているのでが…
アドバイスよろしくお願いします。

{ "categories": [ { "name": "abstract_rect", "score": 0.265625 }, { "name": "others_", "score": 0.0390625 } ], "description": { "tags": [ "food", "table", "indoor", "plate", "wooden", "sitting", "small", "filled", "items", "top", "white", "different", "bowl", "cake", "holding", "fruit", "board" ], "captions": [ { "text": "a plate of food on a table", "confidence": 0.87181982919983547 } ] }, "requestId": "01d523a8-128b-4efa-b6d6-6b8fc8c2765c", "metadata": { "width": 320, "height": 240, "format": "Jpeg" }, "color": { "dominantColorForeground": "White", "dominantColorBackground": "Brown", "dominantColors": [ "Brown", "White" ], "accentColor": "B1481A", "isBWImg": false } }

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

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

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

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

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

Tak1wa

2017/09/05 05:03

Json文字列からオブジェクトへのデシリアライズは出来ているのですか?
hamaa

2017/09/05 05:14

?デシリアライズの意味を間違えていたらすみません。出来ていないと思います 
hamaa

2017/09/05 05:17

MicrosoftのsampleプログラムでJson文字列で戻ってくる所はできてます。
hamaa

2017/09/05 05:19

JSONビジュアライザーで確認はできてます
guest

回答2

0

ベストアンサー

こんにちは。

  1. Jsonの階層にあわせてクラスを作成
  2. JsonConvert.DeserializeObjectsでJson文字列を渡す
  3. 変換したものは配列やオブジェクトが入れ子になってるただのオブジェクトなのでJsonとか関係なしに普通にアクセスする
namespace ConsoleApp1 { class Program { static void Main(string[] args) { var json = @" { ""categories"": [ { ""name"": ""abstract_rect"", ""score"": 0.265625 }, { ""name"": ""others_"", ""score"": 0.0390625 } ], ""description"": { ""tags"": [ ""food"", ""table"", ""indoor"", ""plate"", ""wooden"", ""sitting"", ""small"", ""filled"", ""items"", ""top"", ""white"", ""different"", ""bowl"", ""cake"", ""holding"", ""fruit"", ""board"" ], ""captions"": [ { ""text"": ""a plate of food on a table"", ""confidence"": 0.87181982919983547 } ] }, ""requestId"": ""01d523a8-128b-4efa-b6d6-6b8fc8c2765c"", ""metadata"": { ""width"": 320, ""height"": 240, ""format"": ""Jpeg"" }, ""color"": { ""dominantColorForeground"": ""White"", ""dominantColorBackground"": ""Brown"", ""dominantColors"": [ ""Brown"", ""White"" ], ""accentColor"": ""B1481A"", ""isBWImg"": false } } "; var hoge = JsonConvert.DeserializeObject<Rootobject>(json); Console.WriteLine(hoge.description.captions[0].text); Console.WriteLine(hoge.description.captions[0].confidence); Console.Read(); } public class Rootobject { public Category[] categories { get; set; } public Description description { get; set; } public string requestId { get; set; } public Metadata metadata { get; set; } public Color color { get; set; } } public class Description { public string[] tags { get; set; } public Caption[] captions { get; set; } } public class Caption { public string text { get; set; } public float confidence { get; set; } } public class Metadata { public int width { get; set; } public int height { get; set; } public string format { get; set; } } public class Color { public string dominantColorForeground { get; set; } public string dominantColorBackground { get; set; } public string[] dominantColors { get; set; } public string accentColor { get; set; } public bool isBWImg { get; set; } } public class Category { public string name { get; set; } public float score { get; set; } } } }

投稿2017/09/05 05:10

Tak1wa

総合スコア4791

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

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

hamaa

2017/09/05 05:57

ありがとうございます! ここまでやってもらえてデバックしながら理解できました。 Jsonの階層にあわせてクラスを作成すごく理解できました本当に感謝です
guest

0

クラス自体は、便利機能を使えば楽ちんですよ
http://qiita.com/tsgkdt/items/3e108b2b6c7f2a7e0b21

投稿2017/09/05 05:46

kiichi54321

総合スコア1984

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問