Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1460|回复: 0

[默认分类] c# 与java base64 不一致解决方案

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2020-7-30 12:39:21 | 显示全部楼层 |阅读模式
    不一致的问题不是编码的问题  而是json字符串的问题通常我们会json 嵌套  我们先来看连个字符串
    {"contentType":"","httpMethod":"POST","paramMap":"{\"keyword\":\"华为\"}","url":"https:\/\/bizapi.jd.com\/api\/search\/search"}    --第一条

    {"contentType":"","httpMethod":"POST","paramMap":{"keyword":"华为"},"url":"https://bizapi.jd.com/api/search/search"}     ----第二条
    -----接下来我们看一下效果

    看第二条的

    第一条情况:我们将json 字符串 转换为对象 直接使用 但是  paramMap的值是一个字符串  我们又要将 该值转换为json在使用的过程中  我们转换了两次
    第二条情况:直接转换为json对象 我们分别取不同key的value来使用      发生错误的问题 应该是有  反斜杠转移符
    我们上一下代码

    1. using Newtonsoft.Json;
    2. using System;
    3. using System.Collections.Generic;
    4. using System.ComponentModel;
    5. using System.Data;
    6. using System.Drawing;
    7. using System.Linq;
    8. using System.Text;
    9. using System.Windows.Forms;
    10. namespace Base64
    11. {
    12.     public partial class Form1 : Form
    13.     {
    14.         public Form1()
    15.         {
    16.             InitializeComponent();
    17.         }
    18.         
    19.         private void button1_Click(object sender, EventArgs e)
    20.         {
    21.             Dictionary<string, string> dic = new Dictionary<string, string>();
    22.             dic.Add("Cid", "123456"); dic.Add("type", "int");
    23.             JsonStr jsonstr=new JsonStr(dic,"http://localhost");
    24.             string result = JavaBase64(JsonConvert.SerializeObject(jsonstr));
    25.         }
    26.         #region 实体类
    27.         /// <summary>
    28.         /// 实体类
    29.         /// </summary>
    30.         class JsonStr
    31.         {
    32.             public string Method = "POST";
    33.             public Dictionary<string, string> param;
    34.             public string url = "";
    35.             public JsonStr(Dictionary<string, string> _param, string _url)
    36.             {
    37.                 param = _param; url = _url;
    38.             }
    39.         }
    40.         #endregion
    41.         #region 转换为单字节  java base64
    42.         /// <summary>
    43.         /// 转换为单字节  java base64
    44.         /// </summary>
    45.         /// <param name="str"></param>
    46.         /// <returns></returns>
    47.         public static string JavaBase64(string str)
    48.         {
    49.             byte[] by = Encoding.UTF8.GetBytes(str);
    50.             sbyte[] sby = new sbyte[by.Length];
    51.             for (int i = 0; i < by.Length; i++)
    52.             {
    53.                 if (by[i] > 127)
    54.                     sby[i] = (sbyte)(by[i] - 256);
    55.                 else
    56.                     sby[i] = (sbyte)by[i];
    57.             }
    58.             byte[] newby = (byte[])(object)sby;
    59.             return Convert.ToBase64String(newby);
    60.         }
    61.         #endregion
    62.     }
    63. }
    复制代码


    这个问题 近期在与第三方服务商 遇到json问题时处理的  
    一般c# json嵌套在对象重 再把整个对象转为json   是字符串一
    {"contentType":"","httpMethod":"POST","paramMap":"{\"keyword\":\"华为\"}","url":"https:\/\/bizapi.jd.com\/api\/search\/search"}
    而上述字符串在第三方那里却解不开  随后按照代码里的方式  使字符串为json字符串  中间不含json嵌套的  因为嵌套会多出来很多  反斜杠转移符  所以导致  第三方那里解不开  
    如果想要知道c# java base64 为什么解不开
    首先了解  c# java  的byte   c# 0~255  java  -128~127  其次是我们的字符串    我们的字符串  base64  编码前对比  编码后对比  如果一致问题是可以解决的  剩下的思考问题就留给你遐想了
    QQ:35924908  附加信息:博客园看到的
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-20 14:26 , Processed in 0.309485 second(s), 38 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表