使用 xamarin android 解析 json

Posted

技术标签:

【中文标题】使用 xamarin android 解析 json【英文标题】:json parsing with xamarin android 【发布时间】:2013-04-19 05:56:49 【问题描述】:

我在我的 android xamarin 应用程序中编写了一个解析 json 字符串的代码。

            var request = HttpWebRequest.Create(myUrl);
            request.ContentType = "application/json";
            request.Method = "GET";
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                        
                if (response.StatusCode != HttpStatusCode.OK)
                
                    Console.Out.WriteLine("Error fetching data. Server returned status code: 0", response.StatusCode);
                
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                
                    string content = reader.ReadToEnd();
                    if (string.IsNullOrWhiteSpace(content))
                    
                        Console.Out.WriteLine("Response contained empty body...");
                    
                    else
                                            
                        List<BillsTableFields> billList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<BillsTableFields>>(content);                        
//return block
                    
                
                

但它会引发构建错误。任何帮助将不胜感激,因为我是 xamarin 的新手,在其他任何地方都找不到任何支持。 我得到的构建错误如下所示

C:\Program Files\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(5,5):错误 MSB4018:“LinkAssemblies”任务意外失败。

Mono.Cecil.ResolutionException:无法解析 System.Diagnostics.TraceLevel

在 Mono.Linker.Steps.MarkStep.MarkType(TypeReference 参考)

在 Mono.Linker.Steps.MarkStep.MarkField(FieldReference 参考)

在 Mono.Linker.Steps.MarkStep.InitializeFields(TypeDefinition 类型)

在 Mono.Linker.Steps.MarkStep.InitializeType(TypeDefinition 类型)

在 Mono.Linker.Steps.MarkStep.InitializeAssembly(AssemblyDefinition 程序集)

在 Mono.Linker.Steps.MarkStep.Initialize()

在 Mono.Linker.Steps.MarkStep.Process(LinkContext 上下文)

在 Mono.Linker.Pipeline.Process(LinkContext 上下文)

在 MonoDroid.Tuner.Linker.Process(LinkerOptions options, LinkContext& context)

在 Xamarin.Android.Tasks.LinkAssemblies.Execute()

在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()

在 Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext() (MSB4018) (LoginApptest)

【问题讨论】:

【参考方案1】:

如果链接器失败并显示“找不到类型 blah blah”,这通常意味着您在应用程序的某处使用了桌面 .Net 库。如果是 JSON.Net,去掉桌面程序集,使用组件存储上的 JSON.Net 版本(这是 Xamarin 的 NuGet 版本,除了有些东西是付费的)。

我还会确保您拥有最新版本的 Xamarin.Android。

【讨论】:

感谢@jonathan..!!!我删除了桌面版本,现在它与我从 components.xamarin.com/gettingstarted/json.net 获得的程序集工作正常@

以上是关于使用 xamarin android 解析 json的主要内容,如果未能解决你的问题,请参考以下文章

发生一个或多个错误。 (无法解析 TLS 数据包头)C# Xamarin Android Project Visual Studio

C#使用Xamarin开发Android应用程序 -- 系列文章

带有 Realm 3.4.0 的 .Net Standard 2.0“无法解析引用”Xamarin 表单

Android解析json-Gson使用

VS/Xamarin Android开发Follow Me

Android JSON解析使用Web服务查看古吉拉特语字符