[英]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.