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

質問編集履歴

2

訂正

2015/10/10 07:19

投稿

GH_usami13
GH_usami13

スコア24

title CHANGED
File without changes
body CHANGED
@@ -46,6 +46,7 @@
46
46
 
47
47
  ---
48
48
  【訂正】
49
+
49
50
  Android側から送られてきたJSONをサーブレットで受信して
50
51
  画像データ(byte[])を取得するときに
51
52
  Stringとしてその後、byte[]に変換していましたが、

1

質問訂正

2015/10/10 07:19

投稿

GH_usami13
GH_usami13

スコア24

title CHANGED
File without changes
body CHANGED
@@ -42,4 +42,40 @@
42
42
 
43
43
  データ型の変換という部分で
44
44
  おかしな点がございましたら、
45
- お力添えのほど、よろしくお願い致します。
45
+ お力添えのほど、よろしくお願い致します。
46
+
47
+ ---
48
+ 【訂正】
49
+ Android側から送られてきたJSONをサーブレットで受信して
50
+ 画像データ(byte[])を取得するときに
51
+ Stringとしてその後、byte[]に変換していましたが、
52
+ それですとおかしなことになりますね。
53
+ すみません。
54
+
55
+ なので、はじめから、byte[]で取得すべく、
56
+ ```java
57
+ BufferedReader bufferReaderBody = new BufferedReader(request.getReader());
58
+ String body = bufferReaderBody.readLine();
59
+
60
+ JSONObject jsonObject = JSONObject.fromObject(body);
61
+ byte[] binaryData = (byte[])jsonObject.get("image1");
62
+ ```
63
+ としましたが、
64
+ ```Java
65
+ "image1":"[B@✕✕✕✕✕✕✕✕"
66
+ ```
67
+ という形式で表記されているため、
68
+ ```java
69
+ byte[] binaryData = (byte[])jsonObject.get("image1");
70
+ ```
71
+ の段階で
72
+ ```java
73
+ java.lang.String cannot be cast to [B
74
+ ```
75
+ というエラーがでてしまいます。
76
+
77
+ [Bがbyte[]にキャストできないのは、わかるのですが、
78
+ それを回避して、
79
+ byte[]として値を取得する方法はありますでしょうか?
80
+
81
+ 何卒、よろしくお願い致します。