加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 通过命令行传递JSON字符串

发布时间:2020-12-16 00:25:10 所属栏目:百科 来源:网络整理
导读:我将一个对象序列化为json字符串并通过命令行将其传递给应用程序,但是当我在应用程序中收到参数时,这不再是json字符串而是常规字符串. 我正在使用下面的代码来创建json字符串 var jsonStr = new JavaScriptSerializer().Serialize(obj); 我正在传递的字符串
我将一个对象序列化为json字符串并通过命令行将其传递给应用程序,但是当我在应用程序中收到参数时,这不再是json字符串而是常规字符串.

我正在使用下面的代码来创建json字符串

var jsonStr = new JavaScriptSerializer().Serialize(obj);

我正在传递的字符串 – “{”name“:”abc“,”place“:”xyz“}”
我收到的字符串 – “{name:abc,place:xyz}”;

如何维护json字符串的结构?

解决方法

我想双重推论已被消除,因为它们在CLI世界中具有意义.

我会说将整个JSON转换为基本64字符串,然后,在CLI内部再次转换为常规字符串应该工作:

var jsonStr = Convert.ToBase64String(Encoding.UTF8.GetBytes(new JavaScriptSerializer().Serialize(obj)));

// When your receive the whole string....
var jsonStr = Encoding.UTF8.GetString(Convert.FromBase64String(inputStr));

// Now deserialize your JSON string into a regular .NET object...

回答@Panagiotis Kanavos的一些评论……

The CLI doesn’t corrupt any string – people would have noticed by now.
If the OP sends a different string,the problem is in that code,not
the CLI

正如我在评论中指出的那样,我知道在.NET世界中我们不需要逃避JSON,也许在其他环境中也没有必要这样做.

我建议使用base 64方法,因为它是一个防弹解决方案,并且因为OP提供了一些细节和代码示例不足,所以在一天结束时,我相信它的基本64方法与仅仅避免双引号一样有效,但它也是提供了一个附加值:除了“.”之外,它还会逃避任何特殊字符.

顺便说一句,实际情况是CLI会阻止某些字符. Windows上的redis-cli不允许使用大括号…

更新2

由于@Panagiotis Kanavos将CLI与公共语言接口混淆,我想确保每个阅读我答案的人都将CLI理解为命令行界面.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读