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

时间:2017-06-12 04:02:06

标签: java ios json parsing client-server

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

在iOS端(服务器端)

  

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

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

在Java End(客户端)

  

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

iOS端代码:

NSData *dataImage = UIImagePNGRepresentation(baseImgView.image);   
NSString *stringImage = [dataImage base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 
currentImage = stringImage;

进一步创建了一个名为参数的dictonary并使用它将其转换为json:

 NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameter options:NSJSONWritingPrettyPrinted error:nil];
 NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

请建议我同样处理这个问题?

1 个答案:

答案 0 :(得分:0)

在iOS端

  

图片 - > NSData - > Base 64 String - > JSON字符串(此JSON字符串包含   一些特殊字符)

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

在java端,我们需要解码utf8字符串编码以及基本编码。 import 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());
    }