我在便携式类库 (PCL) 项目(针对 Xamarin.Android 和 Xamarin.iOS)中使用 Json.NET (Newtonsoft.Json) 包,并希望获得没有格式的 JSON 对象的字符串表示(即没有新行,没有标签等)。我怎样才能做到这一点?
目前,如果我调用JObject.ToString()一个JObject实例,我会得到一个带有新行 ( \n) 字符的字符串,如下所示:
"{\n \"key\": \"value\"\n}"
Run Code Online (Sandbox Code Playgroud)
从本质上讲,我希望做的是解析或可能不包含格式/缩进/等,解析JSON对象转换为它做一个字符串JSON对象的初始字符串表示不包含格式/缩进/ etc和结束带有一个字符串,如下所示:
"{\"key\":\"value\"}"
Run Code Online (Sandbox Code Playgroud)
PCL 项目中的 Json.NET (Newtonsoft.Json) 包是否可以实现这一点?我可以用另一个图书馆来完成这个吗?
json.net xamarin.ios xamarin.android portable-class-library xamarin
最近我被要求为新应用程序设置设计,需要使用Xamarin构建.该团队已经为Android,iOS和Windows Phone创建了一个DEMO应用程序.因此,基本上这个演示版本需要转换/重构为适当的可维护产品.
在查看代码当前在DEMO应用程序中实现的内容时,我发现使用了一些不能用作PCL的第三方库.这意味着我无法使用PCL构建我的应用程序,除非我可以将此第三方库移植到PCL中.
我的发现是:
问题:
我想在可移植的 C# 类中实现这个逻辑:
static JsonWebToken()
{
HashAlgorithms = new Dictionary<JwtHashAlgorithm, Func<byte[], byte[], byte[]>>
{
{ JwtHashAlgorithm.HS256, (key, value) => { using (var sha = new HMACSHA256(key)) { return sha.ComputeHash(value); } } },
{ JwtHashAlgorithm.HS384, (key, value) => { using (var sha = new HMACSHA384(key)) { return sha.ComputeHash(value); } } },
{ JwtHashAlgorithm.HS512, (key, value) => { using (var sha = new HMACSHA512(key)) { return sha.ComputeHash(value); } } }
};
}
Run Code Online (Sandbox Code Playgroud)
但是HMACSHA256,HMACSHA384并且HMACSHA512在便携式库中不存在。
首先我尝试使用https://github.com/AArnott/PCLCrypto 但我总是得到: …
你好,Xamarin 受害者,
我的 ListView 有问题,其中未显示 itemsource 中的所有项目。显示了总共 12 个项目中的 6 个。在这里,您有我的 XAML 页面,您可以在其中查看我如何使用列表视图(列表视图在中间部分使用):
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Prototype_Deinceps.views.subject.DetailPage"
xmlns:multiplechoices="clr-namespace:Prototype_Deinceps.viewincludes.QuestionTypes;assembly=Prototype_Deinceps"
xmlns:CustomElements="clr-namespace:Prototype_Deinceps.CustomElements;assembly=Prototype_Deinceps"
Title="Detail">
<!-- ToolBar -->
<ContentPage.ToolbarItems>
<ToolbarItem Icon="Edit.png">
<ToolbarItem.Text>
<OnPlatform x:TypeArguments="x:String"
iOS="Wijzig"/>
</ToolbarItem.Text>
</ToolbarItem>
</ContentPage.ToolbarItems>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="6*" />
<RowDefinition Height= "9*" />
<RowDefinition Height="6*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!-- Top part of the screen that consist of basic info of the entity-->
<StackLayout x:Name="BasicInfo" Margin="10,10,10,5" Grid.Row="0" Grid.Column="0">
<Label Text="Basic Info" …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 Xamarin 表单应用程序中使用 HttpUtility。我有一个 Pcl 项目。这不可能吗?我尝试添加 system.web 命名空间,但没有成功。请协助。我怎样才能让它发挥作用。
string postString = String.Format("username={0}&password={1}&grant_type=password", HttpUtility.HtmlEncode(username), HttpUtility.HtmlEncode(password));
Run Code Online (Sandbox Code Playgroud) 我想将 Xamarin PCL 项目转换为 .Net Standard。
我的问题是,这将支持哪些版本的 Android?我当前的项目支持 Android 4。.Net Standard 能支持吗?它是否取决于 .Net Standard 版本?
我看过这张表,但它只告诉我支持的“Xamarin”版本,我不明白它和 Android 版本之间的联系。.Net Standard 是与 Android 版本无关(有点像 C# 版本与 .Net 版本是分开的)还是 .Net Standard 与特定版本的 Android 相关联(在它支持的其他框架中)?
c# xamarin.android portable-class-library xamarin .net-standard
我想检查以下内容
typeof( ICollection<> ).GetTypeInfo().IsAssignableFrom( targetProperty.PropertyType.GetTypeInfo() )
Run Code Online (Sandbox Code Playgroud)
传入的参数IsAssignableFrom是一个IList<Something>.但它正在返回虚假.
以下内容也返回false.
typeof( ICollection<> ).GetTypeInfo().IsAssignableFrom( targetProperty.PropertyType.GetTypeInfo().GetGenericTypeDefinition() )
Run Code Online (Sandbox Code Playgroud)
即使以下情况也会返回false.
typeof( ICollection<> ).GetTypeInfo().IsAssignableFrom( typeof(IList<>) )
Run Code Online (Sandbox Code Playgroud)
难道后者肯定会回归真实吗?
如果targetProperty.PropertyType可以是任何类型,我怎样才能得到正确的结果?它可以是a List<T>,a ObservableCollection<T>,a ReadOnlyCollection<T>,自定义集合类型等.
我只是这个PCL库中的新手,我正在开发一个带有Xamarin的iPhone应用程序,我无法找到将其保存在手机上的方法.我最接近的是PCLStorage,但他只保存文本.还有另一种方法可以用其他程序保存二进制文件.谢谢.
foreach (images element in json_object)
{
//var nameFile = Path.Combine (directoryname, element.name);
try{
IFile file = await folder_new.GetFileAsync(element.name);
}catch(FileNotFoundException ex ){
RestClient _Client = new RestClient(element.root);
RestRequest request_file = new RestRequest("/images/{FileName}");
request_file.AddParameter("FileName", element.name, ParameterType.UrlSegment);
_Client.ExecuteAsync<MemoryStream>(
request_file,
async Response =>
{
if (Response != null)
{
IFolder rootFolder_new = FileSystem.Current.LocalStorage;
IFile file_new = await rootFolder_new.CreateFileAsync(element.name,CreationCollisionOption.ReplaceExisting);
await file_new.WriteAllTextAsync(Response.Data);
}
});
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个PCl,我想在其中使用HttpClient进行异步调用.我编码像这样
public static async Task<string> GetRequest(string url)
{
var httpClient = new HttpClient() { MaxResponseContentBufferSize = int.MaxValue };
HttpResponseMessage response = await httpClient.GetAsync(url);
return response.Content.ReadAsStringAsync().Result;
}
Run Code Online (Sandbox Code Playgroud)
但等待显示错误"无法等待System.net.http.httpresponsemessage"之类的消息.
如果我使用这样的代码比一切顺利但不是异步方式
public static string GetRequest(string url)
{
var httpClient = new HttpClient() { MaxResponseContentBufferSize = int.MaxValue };
HttpResponseMessage response = httpClient.GetAsync(url).Result;
return response.Content.ReadAsStringAsync().Result;
}
Run Code Online (Sandbox Code Playgroud)
我只是希望这个方法以异步方式执行.
这是屏幕截图:

我正在使用Xamarin.Forms,并且尝试读取文本文件时尝试从资源,返回的Null值以下代码读取文本文件。
var assembly = typeof(BookPage).GetTypeInfo().Assembly;
Stream stream = assembly.GetManifestResourceStream("AboutResources.txt");
Run Code Online (Sandbox Code Playgroud)
//这里的程序集返回空值,我找不到文本资源
我的代码在从ContentPagePLC项目继承的以下类下
public class BookPage : ContentPage
Run Code Online (Sandbox Code Playgroud)
c# ×7
xamarin ×6
xamarin.ios ×2
asynchronous ×1
bouncycastle ×1
ios ×1
json.net ×1
reflection ×1
xaml ×1