簡體   English   中英

如何將JSON格式的純文本轉換為簡單的純文本

[英]How to convert JSON format plain text to simple plain text

我有一個純文本字符串,其中包含使用JSON格式的方括號,因為它是使用JavaScriptSerializer()。Serialize()方法創建的。 我需要刪除方括號和collon,並將其轉換為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'

好吧,您在這里進行了三種不同的操作。

第一個也是表面上的問題是:如何更改字符串?

簡單-您可以進行一些字符串替換,最好使用Regex。 刪除開始/結束括號,將[a]:“ [b]”更改為[a] = [b],或者-但您希望最終格式看起來像。

第二個更深層次的問題是:JSON不僅僅是鍵=值的簡單列表。 您可以嵌套。 您可以具有非字符串數據。 簡單地說,您想將JSON結果更改為key = value,key = value,key = value等-是脆弱的 您如何知道JSON結構將是您所期望的? 即使您具有嵌套結構,非字符串/ int數據等,JSON序列化也將成功進行序列化。而且,如果您想要不易中斷的可靠代碼,則必須弄清楚:我該如何處理? 可以處理嗎?

第三,也是最后一件事:您正在采用標准數據格式架構,並弄清楚如何將其轉換為非標准數據格式。 90%的時間有人這樣做,他們應該被槍殺。 認真地,花一些時間問自己是否可以按原樣使用JSON,是否可以將需要key = value,key = value等的過程更改為使用實際的標准化數據格式。

這是一個簡單的解決方案,其中(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

好,謝謝大家的時間和回應。 您的回答將我引向了解決方案,最后我找到了以下解決方案,完美解決了問題。

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格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM