[英]How to print values from JSON Type Object to console in C#
我正在嘗試使用c#2.0編寫控制台應用程序,這將消耗我的Web服務並從Web方法返回結果。
在我的C#代碼中,我能夠從web方法獲取值,請參見以下示例代碼:
// print results
try
{
Type objtype = Type.GetType(crisresult.ToString());
object obj = Activator.CreateInstance(objtype);
Object[] mArgs = new Object[methodArgs.Length + 1];
methodArgs.CopyTo(mArgs, 0);
mArgs.SetValue(obj, methodArgs.Length);
methodArgs = mArgs;
Object result = mi.Invoke(service, methodArgs);
Console.WriteLine(result);
}
catch (Exception e)
{
Console.WriteLine("Error invoking method '" + methodName + "'");
Console.WriteLine(e);
}
Console.WriteLine("Press enter to continue...");
Console.ReadLine();
現在在上面的代碼中,我的web方法的結果以JSON Type完美返回,因此我的Object result
具有JSON類型的值,例如:
{"FullName":"Mr Mahesh Sharma","Miles":0,"TierStatus":"IO","TierMiles":0,"MilesExpiry":0,"ExpiryDate":"30/03/2012 00:00:00","AccessToken":"106C9FD143AFA6198A9EBDC8B9CC0FB2CE867356222D21D45B16BEEB9A7F390B5E226665851D6DB9","ActiveCardNo":"00300452124","PersonID":8654110}
以上結果,我想以以下格式在控制台中打印:
FullName: Mr Mahesh Sharma
Miles: 0
TierStatus: IO
TierMiles:0
MilesExpiry:0
ExpiryDate:31 March 2012
AccessToken: 106C9FD143AFA6198A9EBDC8B9CC0FB2CE867356222D21D45B16BEEB9A7F390B5E226665851D6DB9
ActiveCardNo: 00300452124
PersonID: 8654110
您可以使用以下內容:
return Newtonsoft.Json.JsonConvert.SerializeObject( obj, Formatting.Indented );
簡單干凈。
我個人將使用JSON.NET 。 樣例代碼:
using System;
using Newtonsoft.Json.Linq;
class Test
{
static void Main()
{
string json = "{\"FullName\":\"Mr Mahesh Sharma\",\"Miles\":0,\"TierStatus\":\"IO\"," +
"\"TierMiles\":0,\"MilesExpiry\":0,\"ExpiryDate\":\"30/03/2012 00:00:00\"," +
"\"AccessToken\":\"106C9FD143AFA6198A9EBDC8B9CC0FB2CE867356222D21D45B16BEE" +
"B9A7F390B5E226665851D6DB9\",\"ActiveCardNo\":\"00300452124\",\"PersonID\":8654110}";
JObject parsed = JObject.Parse(json);
foreach (var pair in parsed)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
}
}
輸出:
FullName: "Mr Mahesh Sharma"
Miles: 0
TierStatus: "IO"
TierMiles: 0
MilesExpiry: 0
ExpiryDate: "30/03/2012 00:00:00"
AccessToken: "106C9FD143AFA6198A9EBDC8B9CC0FB2CE867356222D21D45B16BEEB9A7F390B5E226665851D6DB9"
ActiveCardNo: "00300452124"
PersonID: 8654110
請注意,每對中的值都是JToken
,您可以將其轉換為相關類型。
如果返回的json始終采用該格式,則您也可以嘗試使用JavaScriptSerializer
嘗試以下代碼:
class Result
{
public string FullName{get; set;}
public int Miles {get;set;}
public string TimerStatus {get;set;}
public int TimerMiles {get;set;}
public int MilesExpiry {get;set;}
public DateTime ExpiryDate{get;set;}
public string AccessToken {get;set;}
public string ActiveCardNo {get;set;}
public long PersonID {get;set;}
}
然后將字符串反序列化為C#對象。
JavaScriptSerializer jsr = new JavaScriptSerializer();
Result res = jsr.Deserialize<Result>(/*your json string*/);
Console.Writeline("FullName:{0}\n"+"
"Miles{1}\n" +
"TimerStatus:{2}\n"+
"TimerMiles:{3}\n"+
"MilesExpiry:{4}\n"+
"ExpiryDate:{5}"+
"AccessToken:{6}"+
"ActiveCardNo:{7}"+
"PersonID:{8}",
res.FullName, res.Miles,res.TimerStatus,res.TimerMiles,res.MilesExpiry,res.Expirydate,res.AccessToken,res.ActivecardNo,res.PersonID
)
根據需要輸出:
FullName: Mr Mahesh Sharma
Miles: 0
TierStatus: IO
TierMiles:0
MilesExpiry:0
ExpiryDate:31 March 2012
AccessToken: 106C9FD143AFA6198A9EBDC8B9CC0FB2CE867356222D21D45B16BEEB9A7F390B5E226665851D6DB9
ActiveCardNo: 00300452124
PersonID: 8654110
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.