【发布时间】:2017-09-14 04:21:01
【问题描述】:
您好,我正在使用 Xamarin 对 android 进行应用程序。我编写了一个代码来从 WSO2 调用 API,它返回的答案取决于用户发送的 ID。它在 Content 中返回一个 JSON,如下所示:
{"consumerId":56704292158, “类别 ID”:1, “类别描述”: “佩索阿”, "firstName":"FN","lastName":"Last Name","fiscalDocuments":[{"fiscalDocument":{"documentType":"Brasil: nº CPF","cpf":199999992}}],"gender ":"M","emailAddress":"r****@*.com","optIns":[{"optIn":{"brandName":"consul","acceptanceStatus":false}},{ "optIn":{"brandName":"brastemp","acceptanceStatus":true}}],"communicationData":[{"communicationInfo":{"addressId":2****03,"phoneNumbers":[{ "phoneNumber":{"phoneType":"mobilePhone","phoneNumber":5555555555}}],"streetAddress":"ANY STREET","streetNumber":123,"streetComplement":null,"streetDistrict":"ANY TOWN","cityName":"ANY CITY","stateCode":"XX","zipCode":"12345"," locationReferences":[{"locationReference":"Mercado"}],"countryCode":"ZZ"}},{"communicationInfo":{"addressId":2.563244E+7,"phoneNumbers":[{"phoneNumber": {"phoneType":"mobilePhone","phoneNumber":5555555555}},{"phoneNumber":{"phoneType":"homePhone","phoneNumber":555555555}}],"streetAddress":"ANY STREET"," streetNumber":123,"streetComplement":"CASA","streetDistrict":"ANY TOWN","cityName":"ANY CITY","stateCode":"XX","zipCode":"12345","locationReferences" :[{"locationReference":"Ao lado do deposito lua nova"}],"countryCode":"ZZ"}}]}
我只想从这个字段中获取名字和姓氏。我正在尝试序列化它,但我认为我做错了什么。这是代码
using System;
using Android.App;
using Android.Widget;
using Android.OS;
using RestSharp;
using Newtonsoft.Json;
using Android.Util;
using App4.Resources;
using Newtonsoft.Json.Linq;
namespace App4
{
[Activity(Label = "App4", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
EditText edtcpf;
Button btnConsumer;
TextView txtcpf;
RestRequest cpf { get; set; }
public RestClient consumer { get; set; }
IRestResponse mensagemConsumer;
TextView txtresposta;
RestClient orderId { get; set; }
RestRequest requestorderId { get; set; }
IRestResponse answer { get; set; }
IRestResponse answerorder { get; set; }
TextView txtnome;
public string raika;
private string teamname;
private JToken primeironome;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
btnConsumer = FindViewById<Button>(Resource.Id.btnConsumer);
edtcpf = FindViewById<EditText>(Resource.Id.edtcpf);
txtcpf = FindViewById<TextView>(Resource.Id.txtcpf);
txtresposta = FindViewById<TextView>(Resource.Id.txtresposta);
txtnome = FindViewById<TextView>(Resource.Id.txtNome);
btnConsumer.Click += BtnConsumer_Click;
}
private void BtnConsumer_Click(object sender, EventArgs e)
{
try
{
// API Consumer CPF
consumer = new RestClient("https://qa.api-latam.whirlpool.com/v1.0/consumers");
cpf = new RestRequest("/" + edtcpf.Text, Method.GET);
cpf.AddHeader("Content-Type", "application/json; charset=utf-8");
cpf.AddHeader("Authorization", "Bearer 70197e6c-d81b-384c-bb32-d69e8c10b101");
mensagemConsumer = consumer.Execute(cpf);
string nombre = Convert.ToString(mensagemConsumer.Content);
Nome nome = new Nome();
string json = JsonConvert.SerializeObject(mensagemConsumer.Content, Formatting.Indented);
nome.firstName = mensagemConsumer.Content;
Log.Info("info ",json);
txtresposta.Text = json;
//API Consumer Appliances
orderId = new RestClient("https://qa.api-latam.whirlpool.com/v1.0/consumers/");
requestorderId = new RestRequest("/"+ edtcpf.Text+ "/service-orders", Method.GET);
requestorderId.AddHeader("Content-Type", "application/json; charset=utf-8");
requestorderId.AddHeader("Authorization", "Bearer 70197e6c-d81b-384c-bb32-d69e8c10b101");
answerorder = orderId.Execute(requestorderId);
txtnome.Text = answerorder.Content;
string respostaorder = Convert.ToString(answerorder);
dynamic deserializado = JsonConvert.DeserializeObject(respostaorder);
}
catch (Exception)
{
throw;
}
}
}
}
这是带有 get 和 set 的类
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace App4.Resources
{
public class Nome
{
public string firstName { get; set;}
public string lastName { get; set; }
}
}
如何使用 JSON 序列化和反序列化它,该 JSON 使用依赖于 .Text 的 var,例如 edtcpf.Text 及其内容?
【问题讨论】:
标签: c# android json mobile xamarin.android