【问题标题】:How to convert JSON format plain text to simple plain text如何将 JSON 格式的纯文本转换为简单的纯文本
【发布时间】:2019-04-19 02:15:15
【问题描述】:

我有一个纯文本字符串,其中包含 JSON 格式的括号,因为它是使用 JavaScriptSerializer().Serialize() 方法创建的。我需要删除括号和冒号,并希望将其转换为 key = value、key = value 格式。 需要转换

{
     "account":"rf750",
     "type":null,
     "amount":"31",
     "auth_type":"5",
     "balance":"2.95",
     "card":"re0724"
} 

'account=rf750,type=null,amount=31,authe=5,balanc=2.95,card=re0724'

【问题讨论】:

标签: c# json


【解决方案1】:

嗯,这里发生了三种不同的事情。

第一个也是表面问题是:如何更改字符串?

简单 - 你做一些字符串替换,最好使用正则表达式。删除开始/结束大括号,将 [a]:"[b]" 更改为 [a]=[b],或者您希望最终格式看起来像这样。

第二个更深层次的问题是:JSON 不仅仅是一个简单的键=值列表。您可以进行嵌套。你可以有非字符串数据。简单地说您想将 JSON 结果更改为 key=value、key=value、key=value 等 - 是脆弱。你怎么知道 JSON 结构会是你所期望的?即使您有嵌套结构、非字符串/整数数据等,JSON 序列化也会成功序列化。如果您想要不易损坏的可靠代码,您必须弄清楚:我该如何处理? 可以我处理吗?

第三件事,也是最后一件事是:您正在采用 标准 数据格式架构并弄清楚如何将其转换为 非标准 数据格式。 90% 的人这样做,他们应该被枪杀。说真的,花一些时间问问自己是否可以按原样使用 JSON,以及是否可以将需要 key=value、key=value 等的流程更改为使用实际的标准化 数据格式。

【讨论】:

    【解决方案2】:

    这是一个简单的解决方案,它 (1) 将 json 解析为 Dictionary 和 (2) 使用 String.Join 和 Linq Select 来提供所需的输出:

    using System.Linq;
    using Newtonsoft.Json;
    ..
    var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
    var str = string.Join(',', dict.Select(r => $"{r.Key}={r.Value}"));
    

    str-variable 现在包含:

    account=rf750,type=,amount=31,auth_type=5,balance=2.95,card=re0724
    

    【讨论】:

      【解决方案3】:

      感谢大家的时间和回复。您的回答使我找到了解决方案,最后我找到了完美解决问题的以下解决方案。

      var jObj = (JObject)JsonConvert.DeserializeObject(modelString);
      
      modelString = String.Join("&",jObj.Children().Cast<JProperty>().Select(jp => jp.Name + "="+ HttpUtility.UrlEncode(jp.Value.ToString())));
      

      以上代码将JSON转换为url编码的字符串并去掉JSON格式

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-17
        • 1970-01-01
        • 2012-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        • 2012-04-12
        相关资源
        最近更新 更多