JSON包含图片信息如何转出

和别人合作的一个Java项目,现在有一个业务,我向他那边请求用户的信息,他返回的是一串JSON,结果这串JSON里面包含有图片信息,我现在头很大,不知道怎么把图片转出来,我把这串JSON转成LIST对象后图片相关的信息截图如下:

img

JSON部分字符串如下:

img

万分感谢!

base64格式的么?可以参考下这个 http://t.csdn.cn/dIKTD

可以找对方协商,图片用base64格式传输,或者确认下图片是以什么格式传输的,
如果是byte[] 的,可以用FileUtils.writeByteArrayToFile(byteArray);转换成文件

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7683949
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:JSON对象中的函数调用,JSON格式的字符串对应的函数调用方法
  • 除此之外, 这篇博客: Java多线程爬虫,爬取酷我音乐排行榜全部音乐示例中的 五、自己写的工具类的获取json和下载音乐的代码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    package AllMusic;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    
    public class HttpUtil {
    	//获取响应体
    	public String GetHttp(String url,int mark) {
    		// 获取一页带音乐id的json数据
    		StringBuffer body=new StringBuffer();
    		CloseableHttpClient httpClient = HttpClients.createDefault();
    		HttpGet HttpGet = new HttpGet(url);
    		if(mark==1) {
    			// 设置请求头
    			HttpGet.setHeader("csrf", "AOPHIP5DF2M");
    			HttpGet.setHeader("Cookie",
    					"_ga=GA1.2.207336405.1578105222; _gid=GA1.2.1290422414.1578105222; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1578105222,1578105233,1578123281; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1578123667; _gat=1; kw_token=AOPHIP5DF2M");
    		}
    		CloseableHttpResponse response;
    		try {
    			response = httpClient.execute(HttpGet);
    			InputStream inputStream = response.getEntity().getContent();
    			BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
    			String s = "";
    			while ((s = reader.readLine()) != null) {
    				body.append(s);
    			}
    		} catch (ClientProtocolException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return body.toString();
    	}
    
    	//下载音乐
    	public void DownLoadMusic(String url, String musicName) {
    		CloseableHttpClient httpClient = HttpClients.createDefault();
    		HttpGet HttpGet = new HttpGet(url);
    		CloseableHttpResponse response;
    		InputStream inputStream = null;
    		FileOutputStream outputStream = null;
    		try {
    			response = httpClient.execute(HttpGet);
    			inputStream = response.getEntity().getContent();
    			// 创建输出流
    			File file = new File("C:/Users/Edward/Desktop/music/" + musicName + ".mp3");
    			outputStream = new FileOutputStream(file);
    			// 创建缓冲区
    			byte[] buffer = new byte[1024*1024];
    			int temp;
    			while ((temp = inputStream.read(buffer)) != -1) {
    				outputStream.write(buffer,0,temp);
    			}
    		} catch (ClientProtocolException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			try {
    				outputStream.close();
    				inputStream.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
  • 您还可以看一下 黄菊华老师的JSON基础入门实战讲解课程中的 微信小程序入门到就业课(全栈课)学习说明【建议看下】小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    提取并操作JSON中的图片信息,可以按照以下步骤进行操作:

    1. 首先,根据参考资料中的“获取json对象中的值”的方法,可以读取JSON中图片信息的键值,并将其赋值给一个字符串变量,例如imgData。

    2. 接着,可以使用Java的BASE64解码方法将imgData转换为二进制数据。

    3. 最后,将二进制数据转换为图片格式,可以使用Java的ImageIO类对图片进行操作,例如ImageIO.read()方法读取图片,或者ImageIO.write()方法将图片写入到指定路径。

    具体的代码实现如下(以读取一张图片为例):

    // 读取JSON中图片信息的键值
    String imgData = jsonObject.getString("imgData");
    // 将BASE64编码的字符串imgData转换为二进制数据
    byte[] imageBytes = DatatypeConverter.parseBase64Binary(imgData);
    // 将二进制数据转换为BufferedImage格式
    BufferedImage image = ImageIO.read(new ByteArrayInputStream(imageBytes));
    // 对图片进行操作,例如保存到本地
    File outputfile = new File("image.png");
    ImageIO.write(image, "png", outputfile);
    

    需要注意的是,BASE64解码方法需要使用Java内置的DatatypeConverter类,因此需要在代码顶部引入此类:

    import javax.xml.bind.DatatypeConverter;
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

直接json串转json对象或者json数组取需要的数据即可