web-dev-qa-db-ja.com

C#で文字列をJSONに変換する

Simple JSON を使用してこの文字列をJSONに変換しようとしています:

"{\"objects\":[{\"id\":1,\"title\":\"Book\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:22.817Z\"},{\"id\":2,\"title\":\"Apple\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:52.368Z\"}]}"

残念ながら、Visual Studioには対話型デバッグコンソールがないようです。たとえば、デバッガーを行に配置し、ライブインタラクティブコンソールでコードのその部分にステップインします。そうでなければ、SimpleJSONのライブラリを試して、この動作を確認する方法を確認できます。私が間違っている場合は、必ず私を修正してください!

それは不可能ですが、誰もこれを達成する方法を知っていますか?私はこれを試しました:

JSONData jsonData = new JSONData(my_json_string);

しかし、それは文字列をさらにエスケープし、文字列を保持します:

"\"{\\\"objects\\\":[{\\\"id\\\":1,\\\"title\\\":\\\"Book\\\",\\\"position_x\\\":0,\\\"position_y\\\":0,\\\"position_z\\\":0,\\\"rotation_x\\\":0,\\\"rotation_y\\\":0,\\\"rotation_z\\\":0,\\\"created\\\":\\\"2016-09-21T14:22:22.817Z\\\...

私はC#を初めて使用しますが、JSONの解析をよりアクセスしやすくするために、C#にネイティブなものが何もないことに驚いています。あるの?

8
Trip

まず、データモデルを作成します。 json2sharp を使用できます。これは非常に便利なツールです。

public class Item
{
    public int id { get; set; }
    public string title { get; set; }
    public int position_x { get; set; }
    public int position_y { get; set; }
    public int position_z { get; set; }
    public int rotation_x { get; set; }
    public int rotation_y { get; set; }
    public int rotation_z { get; set; }
    public string created { get; set; }
}

次にNewtonsoft.Jsonおよびdeserializeメソッドを呼び出します。

var list = JsonConvert.DeserializeObject<List<Item>>(Yourjson);
12
M. Wiśnicki

質問は、文字列をJSONオブジェクトに変換する方法を尋ねます...これは、次のように、クラスまたはデータモデルを使用せずに達成できます。

using Newtonsoft.Json;

string str = "{\"objects\":[{\"id\":1,\"title\":\"Book\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:22.817Z\"},{\"id\":2,\"title\":\"Apple\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:52.368Z\"}]}";
dynamic json = JsonConvert.DeserializeObject(str);

これで、次のようにjsonのコンテンツにアクセスできます。

json["objects"][0]["title"];

returns "Book"

C#コードを操作できる「インタラクティブデバッグコンソール」のオプションの1つは、Xamarin Workbooks... Microsoft.com/en -us/xamarin/tools/workbooks /

Xamarin Workbooksは、実験、学習、作成に最適なドキュメントとコードのブレンドを提供します...何とか何とか

2
RumbleFish

システムユーティリティを試しましたか?

このように https://msdn.Microsoft.com/ru-ru/library/system.json.jsonvalue.parse%28v=vs.95%29.aspx

使用できます

public static JsonValue Parse(string jsonString)

JsonValueクラスからjsonobjectまたは必要なものにキャストします。

0
Amir Rasulov