Java 将图像转换为JSON时出错(数据损坏),反之亦然

Java 将图像转换为JSON时出错(数据损坏),反之亦然,java,ios,json,parsing,client-server,Java,Ios,Json,Parsing,Client Server,在将任何图像转换为数据并后跟JSON时,它会在JSON字符串中添加一些特殊字符 在iOS端(服务器端) 图像->NSData->NSString->JSON字符串(此JSON字符串 (包含一些特殊字符) 在客户端提取时,它会损坏图像数据,并且该数据未正确解码 在Java端(客户端) 数据->解析为JSON字符串->我们获取的图像数据已损坏-> 无法形成图像 iOS端的代码: NSData *dataImage = UIImagePNGRepresentation(baseImgView.imag

在将任何图像转换为数据并后跟JSON时,它会在JSON字符串中添加一些特殊字符

在iOS端(服务器端)

图像->NSData->NSString->JSON字符串(此JSON字符串 (包含一些特殊字符)

在客户端提取时,它会损坏图像数据,并且该数据未正确解码

在Java端(客户端)

数据->解析为JSON字符串->我们获取的图像数据已损坏-> 无法形成图像

iOS端的代码:

NSData *dataImage = UIImagePNGRepresentation(baseImgView.image);   
NSString *stringImage = [dataImage base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 
currentImage = stringImage;
进一步创建了一个名为parameter的dictional,并使用以下命令将其转换为json:

 NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameter options:NSJSONWritingPrettyPrinted error:nil];
 NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
请建议我用同样的方法来处理这个问题?

在iOS端

图像->NSData->基本64字符串->JSON字符串(此JSON字符串包含 (一些特殊字符)

首先使用NSDatabase64编码64CharacterLineLength(base 64编码)将其转换为base 64字符串,然后在转换为json期间使用NSUTF8StringEncoding(UTF8编码)

在java端,我们需要解码utf8字符串编码以及基本编码。 导入java.util.Base64

其中一个stackoverflow链接(不记得确切链接)给出了一个想法。代码如下:

这里的图像是编码字符串。

import java.util.Base64;

     try {
    // Encode using basic encoder
    String base64encodedString=Base64.getEncoder().encodeToString(Image.getBytes("utf-8"));
    //   System.out.println("Base64 Encoded String (Basic) :" +base64encodedString);
    // Decode
        byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);    
        String replaceableImage =   new String(base64decodedBytes, "utf-8");
        System.out.println("Original String:" + replaceableImage);
    }catch(UnsupportedEncodingException e){
        System.out.println("Error :" + e.getMessage());
    }

您正在尝试将图像上载到服务器吗?是的,我正在使用iOS服务器(在GCDAsyncSocket库的帮助下创建)上载图像并在java端提取它(客户端是java制作的)请上载完整的代码我已经更新了用于将图像转换为base 64然后转换为json字符串的iOS代码。这个JSON字符串被传递到java服务器。