我是 Xamarin Forms 的新手,我正在尝试创建一种从 API 请求项目列表的方法。但是,由于错误消息,我无法编译解决方案
行中的“无法从字符串转换为 NewtonSoft.Json.JsonReader”
var Items = JsonSerializer.Deserialize<Dictionary<string, Paises>>(content);
这是整个例程:
public static async Task<List<Paises>> GetPaisesActivosAsync()
{
string baseUri = new BaseUri().baseUri;
string sufixUri = "/PaisesApi/GetActives";
var uri = baseUri + sufixUri;
List<Paises> listaPaisesActivos = null;
HttpResponseMessage response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAsync();
var Items = JsonSerializer.Deserialize<Dictionary<string, Paises>>(content);
}
return listaPaisesActivos;
}
Run Code Online (Sandbox Code Playgroud)
预先感谢您的支持。
问候,
我有我的自定义类User:
class User {
public String name;
public int id;
public Address address;
public Timestamp created;
}
Run Code Online (Sandbox Code Playgroud)
我现在正在为User.class创建一个自定义的JsonSerializer:
@Override
public JsonElement serialize(User src, Type typeOfSrc,
JsonSerializationContext context) {
JsonObject obj = new JsonObject();
obj.addProperty("name", src.name);
obj.addProperty("id", src.id);
obj.addProperty("address", src.address.id);
// Want to invoke another JsonSerializer (TimestampAdapter) for Timestamp
obj.add("created", ???);
return obj;
}
Run Code Online (Sandbox Code Playgroud)
但我已经有了一个TimestampAdapter我用的Timestamp.class.我怎样才能调用它JsonSerializer来在"创建"字段中使用User.class?
我正在使用Newtonsoft的JsonSerializer来序列化一些类.
由于我想在序列化过程中省略我的类的一个字段,我将其声明如下:
[JsonIgnore]
public int ParentId { get; set; }
Run Code Online (Sandbox Code Playgroud)
这有效,但我现在面临一个新问题:在派生类中,我希望这个字段出现(并且只在这个特定的派生类中这样做).
我一直在浏览文档和互联网上的方法来覆盖子类中的这个设置(我想我需要类似的东西[JsonStopIgnore],但我找不到任何接近的东西).
JsonSerializer再次拿起这个属性吗?[JsonIgnore],但仅限于基类?我正在使用 JSON 序列化器辅助函数来轻松访问字典(基本上以 JSON 形式接收)对象。
jsondict.py
"""Utilities for working with JSON and json-like structures - deeply nested Python dicts and lists
This lets us iterate over child nodes and access elements with a dot-notation.
"""
import sys
isPy3 = sys.version_info[0]==3
if isPy3:
def __alt_str__(v,enc='utf8'):
return v if isinstance(v,bytes) else v.encode(enc)
__strTypes__ = (str,bytes)
else:
__alt_str__ = unicode
__strTypes__ = (str,unicode)
class MyLocals(object):
pass
mylocals = MyLocals()
def setErrorCollect(collect):
mylocals.error_collect = collect
setErrorCollect(False)
def errorValue(x):
if isinstance(x,__strTypes__):
return repr(x) if ' …Run Code Online (Sandbox Code Playgroud) 有没有办法删除JSON转换器中的类字段?
例:
import testproject.*
import grails.converters.*
emp = new Employee()
emp.lastName = "Bar"
emp as JSON
Run Code Online (Sandbox Code Playgroud)
作为一个字符串是
{"class":"testproject.Employee","id":null,"lastName":"Bar"}
Run Code Online (Sandbox Code Playgroud)
我更喜欢
{"id":null,"lastName":"Bar"}
Run Code Online (Sandbox Code Playgroud)
有没有办法在最后添加一行代码来删除类字段?
如何强制__type信息在反序列化的JSON响应中呈现?我没有必要重新序列化这些数据,所以我更愿意删除它.ServiceStack似乎将此添加到我的模型的字典属性中.
这是使用ServiceStack和ServiceStack.Text.JsonSerializer
我正在使用Newtonsoft.Json.JsonSerializer序列化小数.
如何将其设置为序列化十进制数,只有1位小数,最后使用0.
即3.5序列化为"3.50"?
好的,我们正在使用Newtonsoft的JSON.NET产品,我非常喜欢.但是,我有一个简单的类结构用于层次结构位置,看起来大致像这样......
public class Location
{
public string Name{ get; set; }
public LocationList Locations{ get; set; }
}
// Note: LocationList is simply a subclass of a List<T>
// which then adds an IsExpanded property for use by the UI.
public class LocationList : List<Location>
{
public bool IsExpanded{ get; set; }
}
public class RootViewModel
{
public LocationList RootLocations{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
...当我将它们序列化为JSON时,一切都很好,除了排除了LocationList类的IsExpanded属性.只序列化列表的内容.
现在,我想象的将是一个很好的格式.它本质上是相同的东西,如果LocationList它不是一个子类,List<Location>而只是一个常规对象,具有一个名为Items类型的属性List<Location>.
{
"Locations":
{
"IsExpanded": true,
"Items": …Run Code Online (Sandbox Code Playgroud) 假设我有以下三个类(为了简洁省略了getter和setter):
@JsonAutoDetect
public class InfoCollection{
private InfoType1 info1;
private InfoType2 info2;
}
@JsonAutoDetect
public class InfoType1{
private String fieldA;
}
@JsonAutoDetect
public class InfoType2{
private String fieldB;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个以这种格式JsonSerializer.serialize()序列化InfoCollection对象的函数:
{
"allInfo":{
"fieldA":"foo",
"fieldB":"bar"
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我现在拥有的:
jsonGenerator.writeStartObject();
jsonGenerator.writeFieldName("allInfo");
jsonGenerator.writeObject(myInfoCollection.getInfo1());
jsonGenerator.writeObject(myInfoCollection.getInfo2());
jsonGenerator.writeEndObject();
Run Code Online (Sandbox Code Playgroud)
这导致以下异常:
org.codehaus.jackson.JsonGenerationException: Can not start an object, expecting field name
Run Code Online (Sandbox Code Playgroud)
我错过了一些小事情,还是我完全错误地采取了这种做法?
注:一对夫妇提出的解决方案迄今涉及编写的每一个人领域InfoType1和InfoType2.我正在寻找一个不需要这个的解决方案,因为我想在具有许多领域的大型类中使用该解决方案.
我有一个django应用程序,它运行在1.4.2版本上,工作完全正常,但最近我更新到django 1.6.5并面临一些奇怪的错误,如下
实际上我在我的网站功能的用户/客户注册过程中得到这个
Request URL: http://example.com/client/registration/
Django Version: 1.6.5
Exception Type: TypeError
Exception Value: <Client: test one> is not JSON serializable
Exception Location: /usr/lib/python2.7/json/encoder.py in default, line 184
Python Executable: /home/user/.virtualenvs/test_proj/bin/python
Python Version: 2.7.5
Run Code Online (Sandbox Code Playgroud)
追溯
Traceback:
File "/home/user/.virtualenvs/test_proj/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
199. response = middleware_method(request, response)
File "/home/user/.virtualenvs/test_proj/local/lib/python2.7/site-packages/django/contrib/sessions/middleware.py" in process_response
38. request.session.save()
File "/home/user/.virtualenvs/test_proj/local/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py" in save
57. session_data=self.encode(self._get_session(no_load=must_create)),
File "/home/user/.virtualenvs/test_proj/local/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py" in encode
87. serialized = self.serializer().dumps(session_dict)
File "/home/user/.virtualenvs/test_proj/local/lib/python2.7/site-packages/django/core/signing.py" in dumps
88. return json.dumps(obj, separators=(',', ':')).encode('latin-1')
File "/usr/lib/python2.7/json/__init__.py" in …Run Code Online (Sandbox Code Playgroud) jsonserializer ×10
json ×6
c# ×3
.net ×2
java ×2
json.net ×2
python ×2
asp.net-mvc ×1
django ×1
grails ×1
gson ×1
jackson ×1
jsonpickle ×1
pickle ×1
servicestack ×1