java litjson_C# XML与Json之间相互转换实例详解

对于这转换其实很简单,其中最重要的就是先要引用类库。可以到官网进行下载引用http://json.codeplex.com。

XML转换为Json字符串

string xml = @"<?xml version=""1.0"" standalone=""no""?>

Alan

https://www.jb51.net

Louis

https://www.jb51.net

";

这是在代码中预定义的一个xml字符串。

mlDocument doc = new XmlDocument();

doc.LoadXml(xml);

然后将xml字符串读入到XML文档。

string jsonText = JsonConvert.SerializeXmlNode(doc);

Console.WriteLine(jsonText);

然后通过Json.Net类库中专有的方法进行转换即可

运行结果为:

cdc336b8972b62cbdacb13168837f2c7.png

Json字符串转换为XML

第一种格式的Json字符串

string json = @"{

""?xml"": {

""@version"": ""1.0"",

""@standalone"": ""no""

},

""root"": {

""person"": [

{

""@id"": ""1"",

""name"": ""Alan"",

""url"": ""http://www.google.com""

},

{

""@id"": ""2"",

""name"": ""Louis"",

""url"": ""http://www.yahoo.com""

}

]

}

}";

预定义的Json字符串如上

同理调用Json.Net类库中的方法

XmlDocument doc1 = JsonConvert.DeserializeXmlNode(json);

Console.WriteLine(doc1.OuterXml);

dd9dd6d5d29f0ce073fb5908966d02f7.png

第二种格式的Json字符串

string json_str = "{\"a\":\"a\",\"b\":\"b\"}";

string json1 = @"{

""?xml"": {

""@version"": ""1.0"",

""@standalone"": ""no""

},

""root"":" + json_str + "}";

同理进行调用

XmlDocument doc2 = JsonConvert.DeserializeXmlNode(json1);

Console.WriteLine(doc2.OuterXml);

2e1957c6fe12b10602f2f2e9cc46f92c.png

调用很简单,只要将传递的XML或者Json字符串格式搞正确,那么得到想要的结果就不难。代码可以直接Copy调用。

PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:

在线json压缩/转义工具:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 私钥转换Java 私钥的过程如下: 1. 首先,将 C# 私钥导出为 XML 格式。 2. 使用 Java 的密钥库管理工具(如 Keytool)创建一个新的 Java 密钥库文件。 3. 从 XML 文件中提取私钥和公钥,然后将它们转换Java 中的 PrivateKey 和 PublicKey 对象。可以使用 Java 的 Bouncy Castle 库来完成这一步骤。 4. 将 PrivateKey 和 PublicKey 对象存储到 Java 密钥库文件中。 5. 将 Java 密钥库文件导出为 JKS 格式。 下面是 C# 密钥转换Java 密钥库的示例代码: ```csharp // 导出 C# 私钥为 XML 格式 CspParameters cspParams = new CspParameters(); cspParams.KeyContainerName = "MyKeyContainer"; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cspParams); string privateKeyXml = rsa.ToXmlString(true); // 将 XML 格式的私钥转换Java 私钥对象 var doc = new XmlDocument(); doc.LoadXml(privateKeyXml); var rsaParams = new RSAParameters(); rsaParams.Modulus = Convert.FromBase64String(doc.GetElementsByTagName("Modulus")[0].InnerText); rsaParams.Exponent = Convert.FromBase64String(doc.GetElementsByTagName("Exponent")[0].InnerText); rsaParams.P = Convert.FromBase64String(doc.GetElementsByTagName("P")[0].InnerText); rsaParams.Q = Convert.FromBase64String(doc.GetElementsByTagName("Q")[0].InnerText); rsaParams.DP = Convert.FromBase64String(doc.GetElementsByTagName("DP")[0].InnerText); rsaParams.DQ = Convert.FromBase64String(doc.GetElementsByTagName("DQ")[0].InnerText); rsaParams.InverseQ = Convert.FromBase64String(doc.GetElementsByTagName("InverseQ")[0].InnerText); rsaParams.D = Convert.FromBase64String(doc.GetElementsByTagName("D")[0].InnerText); RSACryptoServiceProvider rsaJava = new RSACryptoServiceProvider(); rsaJava.ImportParameters(rsaParams); // 将 Java 私钥存储到密钥库中 var keyStore = KeyStore.GetInstance(KeyStore.DefaultType); keyStore.Load(null, null); keyStore.SetKeyEntry("mykey", rsaJava, null, null); var outputStream = new FileOutputStream("mykeystore.jks"); keyStore.Store(outputStream, "mypassword".ToCharArray()); outputStream.Close(); ``` 使用 Bouncy Castle 库将 XML 格式的 C# 公钥转换Java 公钥对象的示例代码如下: ```java // 将 C# 公钥转换Java 公钥对象 var doc = new XmlDocument(); doc.LoadXml(publicKeyXml); var rsaParams = new RSAParameters(); rsaParams.Modulus = Convert.FromBase64String(doc.GetElementsByTagName("Modulus")[0].InnerText); rsaParams.Exponent = Convert.FromBase64String(doc.GetElementsByTagName("Exponent")[0].InnerText); RSACryptoServiceProvider rsaJava = new RSACryptoServiceProvider(); rsaJava.ImportParameters(rsaParams); var publicKey = rsaJava.ExportParameters(false); // 将 Java 公钥存储到密钥库中 var keyStore = KeyStore.GetInstance(KeyStore.DefaultType); keyStore.Load(null, null); keyStore.SetCertificateEntry("mycert", new X509Certificate()); keyStore.SetKeyEntry("mykey", publicKey, null, null); var outputStream = new FileOutputStream("mykeystore.jks"); keyStore.Store(outputStream, "mypassword".ToCharArray()); outputStream.Close(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值