特定の質問:JSONでグループセパレータ(0x1D)などの文字をどのようにフォーマットする必要がありますか?JSONをグループセパレータなどのエスケープ文字で送信する
詳細:(!ベースのC#またはWindows必ずしも)私は、いくつかのバーコードを読んでJSONメッセージでそれらを置くとサービスに彼らの方法でそれらを送信しているC#のコードベースを継承しました
コードは、次のようなバイト配列を取ります。
byte[] rawData = { 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 29, 49,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48};
と.jsonに置かれている文字列に、このバイト配列を変換するために、このようなコードを使用しています。
string dataNew = Regex.Unescape(new string(Encoding.ASCII.GetString(rawData).ToCharArray()));
.jsonの関連部分は、次にようになります
:あなたが見ることができるように
"Notes": [
{
"Id": 0,
"Details": "Produc code: CodeType: DataMatrix, Data: 000000000000000000000000000004\u001d1000000000000000",
"Active": true,
"Acknowledged": false,
"Reported": false
}
],
、Encoding.ASCII.GetString...
治療ASCII文字29(0x1Dの)少し違いました。それは "\ u001"に置かれます。 Regex.Unescapeを入れないと、 "\\ u001"となります。私はエンコーディングと.jsonで不安定です。誰かが私に教えることができます:
- "\ u001"とは何ですか?それはマイクロソフト固有ですか?
- このメッセージを受信している人は、このメッセージでサーバが「チョーク」していることを示しています。グループセパレータがない場合は問題ありません。グループセパレータは.jsonメッセージで送信できますか?そしてもしそうなら、どのように?それが実行可能であれば、C#テクノロジでどのようにデコードしますか?
少し詳しい情報:サーバーの人は、\ u001は^](印刷できない文字を示します)のように表示されていると言います。私はメッセージを送信する前に\ u001を剥がすことができ、それは悪い考えではないかもしれません。しかし、その情報を保持して.json経由で送るのが良いかもしれない他の印刷不能な文字(CR、LFなど)があることが私にはあります。
私の曖昧さを許してください。私はまだこのコードベースとこれらの特定のアイデアに慣れています。私は何をしようとしましたが、\ u001は無駄です。私は "チョーク"よりも優れた説明を求めることができますが、いくつかの具体的な質問を念頭におくとよいでしょう。私が明確化または詳細を提供できる場合は、私に知らせてください。
は何ですか?任意の値を持つことのできる任意のバイト列ですか?それとも、実際にはASCII文字の値ですか? – dbc
私の知る限り、ASCII文字値のみを表すバイトです。つまり、0-127の範囲外の文字があるとは思わない。私は配列がほとんど0(ascii 48)を持つように "サニタイズ"しました。 – Dave