c# 与java base64 不一致解决方案

简介: 不一致的问题不是编码的问题  而是json字符串的问题通常我们会json 嵌套  我们先来看连个字符串{"contentType":"","httpMethod":"POST","paramMap":"{\"keyword\":\"华为\"}","url":"https:\/\/bizapi.

不一致的问题不是编码的问题  而是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来使用      发生错误的问题 应该是有  反斜杠转移符

我们上一下代码

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Base64
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        
        private void button1_Click(object sender, EventArgs e)
        {
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("Cid", "123456"); dic.Add("type", "int");
            JsonStr jsonstr=new JsonStr(dic,"http://localhost");
            string result = JavaBase64(JsonConvert.SerializeObject(jsonstr));
        }


        #region 实体类
        /// <summary>
        /// 实体类
        /// </summary>
        class JsonStr
        {
            public string Method = "POST";
            public Dictionary<string, string> param;
            public string url = "";
            public JsonStr(Dictionary<string, string> _param, string _url)
            {
                param = _param; url = _url;
            }
        } 
        #endregion


        #region 转换为单字节  java base64
        /// <summary>
        /// 转换为单字节  java base64
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string JavaBase64(string str)
        {
            byte[] by = Encoding.UTF8.GetBytes(str);
            sbyte[] sby = new sbyte[by.Length];
            for (int i = 0; i < by.Length; i++)
            {
                if (by[i] > 127)
                    sby[i] = (sbyte)(by[i] - 256);
                else
                    sby[i] = (sbyte)by[i];
            }
            byte[] newby = (byte[])(object)sby;
            return Convert.ToBase64String(newby);
        } 
        #endregion



    }
}

这个问题 近期在与第三方服务商 遇到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  附加信息:博客园看到的

 

相关文章
|
3月前
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
123 0
|
10天前
|
JSON 前端开发 Java
【Bug合集】——Java大小写引起传参失败,获取值为null的解决方案
类中成员变量命名问题引起传送json字符串,但是变量为null的情况做出解释,@Data注解(Spring自动生成的get和set方法)和@JsonProperty
|
2月前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
3月前
|
开发框架 Java .NET
C#与Java
在动态且不断发展的软件开发世界中,Java 和 C# 是两个巨头,每个都有自己独特的优势、理念和生态系统。本文深入比较了 Java 和 C#,探讨了它们的历史背景、语言特性、性能指标、跨平台功能等。
C#与Java
|
2月前
|
安全 Java 开发者
Java多线程编程中的常见问题与解决方案
本文深入探讨了Java多线程编程中常见的问题,包括线程安全问题、死锁、竞态条件等,并提供了相应的解决策略。文章首先介绍了多线程的基础知识,随后详细分析了每个问题的产生原因和典型场景,最后提出了实用的解决方案,旨在帮助开发者提高多线程程序的稳定性和性能。
|
2月前
|
人工智能 监控 数据可视化
Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
51 3
|
2月前
|
Java API Apache
|
3月前
|
Java
短频快task的java解决方案
本文探讨了Java自带WorkStealingPool的缺陷,特别是在任务中断方面的不足。普通线程池在处理短频快任务时存在锁竞争问题,导致性能损耗。文章提出了一种基于任务窃取机制的优化方案,通过设计合理的窃取逻辑和减少性能损耗,实现了任务的高效执行和资源的充分利用。最后总结了不同场景下应选择的线程池类型。
|
3月前
|
小程序 Java
小程序访问java后台失败解决方案
小程序访问java后台失败解决方案
62 2
|
4月前
|
传感器 监控 数据可视化
【Java】智慧工地解决方案源码和所需关键技术
智慧工地解决方案是一种新的工程全生命周期管理理念。它通过使用各种传感器、数传终端等物联网手段获取工程施工过程信息,并上传到云平台,以保障数据安全。
95 7