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

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

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

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

JSON

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

Q&A

解決済

2回答

9562閲覧

C#でJSONの取得について扱えない文字があって困っています。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

JSON

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

0グッド

0クリップ

投稿2016/01/26 02:54

いつもお世話になります。
C#, Windows7, VisualStudio2013 Express, .NET4.5の組み合わせでFormアプリケーションを作っています。
JSONの取得について扱えない文字があって困っています。

using System;
using System.Collections.Generic;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;

namespace JSON {
partial class JSON {
public void JSON2operation(string jsontext){
XmlDictionaryReader xmlReader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(jsontext), XmlDictionaryReaderQuotas.Max);
}
}
}

という処理をしています。
ここで、jsontextの内容が

{"item":"万年筆(チタン)"}

のように全角のカッコを含む場合、xmlReaderの値が万年筆までしかとれません。
jsontextとして使えない文字には、全角の()など複数あるそうです。
(1)jsontextとして使えない文字の一覧をご存知ありませんか。
(2)なぜjsontextとして使えない文字があるのでしょう。
(3)使う方法はありますか?
ご示唆ください。

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

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

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

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

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

guest

回答2

0

(1)(2) についてはわからないので回答はできませんが (3) は試しにやってみて「万年筆(チタン)」が問題なく取得できました。

自分は JSON の処理に Json.NET(http://www.newtonsoft.com/json)を使っています。
サンプルを書いて動かしてみたところ問題なく「万年筆(チタン)」が取得できました。
以下、サンプルコードです。

C#

1using System; 2 3using Newtonsoft.Json; 4 5namespace JsonExample 6{ 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 string text = "{ \"item\":\"万年筆(チタン)\"}"; 12 dynamic json = JsonConvert.DeserializeObject(text); 13 Console.WriteLine(json.item); 14 } 15 } 16}

Json.NET は NuGet から追加できます。Newtonsoft.Json というやつです。

投稿2016/01/26 03:41

toydev

総合スコア297

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

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

退会済みユーザー

退会済みユーザー

2016/01/26 04:18

ありがとうございます。 Json.NETは試したのですが、動作させられず断念しました。
guest

0

ベストアンサー

http://www.atmarkit.co.jp/ait/articles/1311/01/news095_3.html
ココ参照。
vs2013までは、文字コード ANSI だから、MS932か、windows31jか、shift_jis か、とりあえず utf-8 は動作保証できないと思って頂ければ。
1バイト文字は全部オッケーで、上記の3文字コードは全て16ビット文字だから、2バイトの組み合わせで、sjis 相当の文字になればそれらは sjis の対応する文字に解釈される、かな。
なので、2014 or later の vs を使うか、さっさと見切りをつけて toydev さん推奨のライブラリをゲットするか、でづね。

投稿2016/01/26 04:00

ipadcaron

総合スコア1693

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

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

ipadcaron

2016/01/26 04:02

違うか、ansi は、1バイトコードのみかもしれません。 或いは、内部unicode だからunicode 変換できた文字はなんとなく本来の文字ではないけど漢字っぽい字面が、、、、な感じでしょうか。
退会済みユーザー

退会済みユーザー

2016/01/26 04:19

全容は定かではないですが、文字コード(unicode)のことがすこしわかりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問