如何使用.text var序列化和估算json



您好,我正在使用Xamarin对Android进行应用。我写了一个代码来调用来自WSO2的API,其返回的答案取决于用户发送的ID。它返回这样的内容中的json:

{" commuterId":56704292158, " categoryId":1, "类别删除": " Pessoa", " firstName":" fn"," lastname":"姓氏"," fiscaldocuments":[{" fiscaldocument":{" documentTytype":" brasil:nºcpf"," cpf"," cpf":199999992}}]":" m"," emailAddress":" r ****@*。com"," optins":[{" optin":{" brandname":" consul"," cactancestatus":false}},{" optin":{" brandname":" brastemp"," acceptancestatus":true}}]," communicationData":[{" communicationInfo":{" properseid":2 **** 03," Phoneenumbers"," Phoneenumbers":[{{{{" Phonenumber":{" PhoneType":" MobilePhone"," Phonenumber":5555555555}}}]," StreetAddress": 街道","街头候选人":123,"街头序幕":NULL," StreetDistrict":"任何城镇"," Cityname":"任何城市"," statecode":" xx"," Zipcode"," Zipcode":" 12345","locationReferences":[{" locationReference":" Mercado"}]," countryCode":" ZZ"}},{" CommunicationInfo":{" adversionId":2.563244e 7,phonenumbers" phonenumbers"{" PhoneType":" MobilePhone"," Phonenumber":55555555555}}},{" PhoneNumber":{" PhoneType":" HomePhone":" HomePhone"," Phonenumber":55555555555}}]Streetnumber":123," StreetComplement":" CASA"," StreetDistrict":"任何城镇"," Cityname":"任何城市"," catsecode":" xx"," Zipcode"," Zipcode":" 12345"," tocelloce References":[{" locationReference":" ao lado do dosedo 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; }
    }
}

如何使用依赖于.Text的var等JSON序列化并进行序列化,例如Edtcpf.text及其内容?

我只想从这个字段和姓氏中获取。

对于此请求,您可以在项目中安装newtonsoft.json软件包,例如:

TextView tvfirst = FindViewById<TextView>(Resource.Id.firstname);
TextView tvlast = FindViewById<TextView>(Resource.Id.lastname);
Button btn = FindViewById<Button>(Resource.Id.btn);
btn.Click += (sender, e) =>
{
    var jsonstring = @"{'consumerId':56704292158, 'categoryId':1, 'categoryDescription': 'Pessoa', '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':'lalala','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'}}]}";
    JToken token = JObject.Parse(jsonstring);
    var firstname = token.SelectToken("firstName");
    tvfirst.Text = firstname.ToString();
    var lastname = token.SelectToken("lastName");
    tvlast.Text = lastname.ToString();
};

我使用两个TextView显示名字和姓氏项,并使用按钮来解析JSON字符串。

,通过复制JSON文件,您的JSON文件中似乎有一个错误的addressId,您可以使用一些JSON格式来格式化JSON字符串,然后您可以看到问题。我将其更改为" Lalala"以用于样品中的测试。

首先,您需要检查这是有效的JSON。根据我的分析,它有一些错误,例如LastName。您可以使用此网站验证https://jsonformatter.curiousconcept.com/

这个JSON的结构是一种奇怪的,但是通过创建它具有的所有对象,您可以这样使用:

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace teste {
    class MainClass {
        public static void Main(string[] args) {
            var jsonString = @"{'consumerId':56704292158, 'categoryId':1, 'categoryDescription': 'Pessoa', '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.563244','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'}}]}";
            JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore,
                MissingMemberHandling = MissingMemberHandling.Ignore
            };
            Pessoa pessoa = JsonConvert.DeserializeObject<Pessoa>(jsonString, jsonSerializerSettings);
            Console.WriteLine(pessoa.FirstName);
            Console.WriteLine(pessoa.LastName);
        }
    }
    public class Pessoa {
        public long ConsumerId { get; set; }
        public int CategoryId { get; set; }
        public string CategoryDescription { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public List<FiscalDocumentData> FiscalDocuments { get; set; }
        public string Gender { get; set; }
        public string EmailAddress { get; set; }
        public List<OptInData> OptIns { get; set; }
        public List<CommunicationData> CommunicationData { get; set; }
    }
    public class OptInData {
        public OptInInfo OptIn { get; set; }
    }
    public class OptInInfo {
        public string BrandName { get; set; }
        public bool AcceptanceStatus { get; set; }
    }
    public class FiscalDocumentData {
        public FiscalDocumentInfo FiscalDocument {get; set; }
    }
    public class FiscalDocumentInfo {
        public string DocumentType { get; set; }
        public long Cpf { get; set; }
    }
    public class CommunicationData {
        public CommunicationInfo CommunicationInfo { get; set; }
    }
    public class CommunicationInfo {
        public string AddressId { get; set; }
        public List<PhoneInfo> PhoneNumbers { get; set; }
        public string StreetAddress { get; set; }
        public int StreetNumber { get; set; }
        public string StreetComplement { get; set; }
        public string StreetDistrict { get; set; }
        public string CityName { get; set; }
        public string StateCode { get; set; }
        public string ZipCode { get; set; }
        public List<Reference> LocationReferences { get; set; }
        public string CountryCode { get; set; }
    }
    public class Reference {
        public string LocationReference { get; set; }
    }
    public class PhoneInfo {
        public PhoneNumberInfo PhoneNumber { get; set; }
    }
    public class PhoneNumberInfo {
        public string PhoneType { get; set; }
        public long PhoneNumber { get; set; }
    }
}

相关内容

  • 没有找到相关文章

最新更新