问题是,当您使用var search = JsonConvert.DeserializeObject<dynamic>(resp.Content);
时,您并未将其反序列化为特定对象,并且很难打印出您的json。
如果您知道Json的外观,请使用this将其转换为您可以轻松用于在屏幕上显示Json的对象。请注意,您必须删除{ get; set; }
并将[Serializable]
添加到每个生成的类的顶部,如here所述。
有了这些生成的类,我们也可以将收到的JSON来对象
//Convert Json to Object so that we can print it
string yourJsonFromServer = resp.Content;//Replace with Json from the server
RootObject rootObj = JsonUtility.FromJson<RootObject>(yourJsonFromServer);
现在,串联需要显示的所有字符串。
string dispStr;
dispStr = "__class__: " + rootObj.__class__ + "\r\n";
dispStr = dispStr + "mpn:" + rootObj.mpn + "\r\n";
dispStr = dispStr + "uid:" + rootObj.uid + "\r\n";
//manufacturer info
dispStr = "Manufacturer __class__: " + rootObj.manufacturer.__class__ + "\r\n";
dispStr = "Manufacturer homepage_url: " + rootObj.manufacturer.homepage_url + "\r\n";
dispStr = "Manufacturer name: " + rootObj.manufacturer.name + "\r\n";
dispStr = "Manufacturer uid: " + rootObj.manufacturer.uid + "\r\n";
最后,使用Text
组件来显示它们。一个Text
组件就足够了。只要使用“\r\n
”将它们分开:
public Text infoText;
...
infoText.horizontalOverflow = HorizontalWrapMode.Overflow;
infoText.verticalOverflow = VerticalWrapMode.Overflow;
infoText.text = dispStr;
对于列表或数组中的项目,你可以使用for循环完了完了并显示出来。
string dispStr = "";
for (int i = 0; i < rootObj.offers.Count; i++)
{
dispStr = dispStr + "SKU: " + rootObj.offers[i].sku + "\r\n";
dispStr = dispStr + "REGION: " + rootObj.offers[i].eligible_region + "\r\n\r\n\r\n";
}
infoText.text = dispStr;
完整的例子:
public Text infoText;
void Start()
{
//Convert Json to Object so that we can print it
string yourJsonFromServer = resp.Content;//Replace with Json from the server
RootObject rootObj = JsonUtility.FromJson<RootObject>(yourJsonFromServer);
string dispStr;
dispStr = "__class__: " + rootObj.__class__ + "\r\n";
dispStr = dispStr + "mpn:" + rootObj.mpn + "\r\n";
dispStr = dispStr + "uid:" + rootObj.uid + "\r\n";
//Example, Show manufacturer info
dispStr = "Manufacturer __class__: " + rootObj.manufacturer.__class__ + "\r\n";
dispStr = "Manufacturer homepage_url: " + rootObj.manufacturer.homepage_url + "\r\n";
dispStr = "Manufacturer name: " + rootObj.manufacturer.name + "\r\n";
dispStr = "Manufacturer uid: " + rootObj.manufacturer.uid + "\r\n";
//Display
infoText.horizontalOverflow = HorizontalWrapMode.Overflow;
infoText.verticalOverflow = VerticalWrapMode.Overflow;
infoText.text = dispStr;
}
生成的类:
[Serializable]
public class Brand
{
public string __class__;
public string homepage_url;
public string name;
public string uid;
}
[Serializable]
public class Manufacturer
{
public string __class__;
public string homepage_url;
public string name;
public string uid;
}
[Serializable]
public class Prices
{
public List<List<object>> USD;
public List<List<object>> INR;
}
[Serializable]
public class Seller
{
public string __class__;
public string display_flag;
public bool has_ecommerce;
public string homepage_url;
public string id;
public string name;
public string uid;
}
[Serializable]
public class Offer
{
public string __class__;
public string _naive_id;
public string eligible_region;
public int? factory_lead_days;
public object factory_order_multiple;
public int in_stock_quantity;
public bool is_authorized;
public bool is_realtime;
public string last_updated;
public int? moq;
public object octopart_rfq_url;
public object on_order_eta;
public int? on_order_quantity;
public object order_multiple;
public object packaging;
public Prices prices;
public string product_url;
public Seller seller;
public string sku;
}
[Serializable]
public class RootObject
{
public string __class__;
public Brand brand;
public Manufacturer manufacturer;
public string mpn;
public string octopart_url;
public List<Offer> offers;
public List<string> redirected_uids;
public string uid;
}
你从哪里得到这个错误吗?请张贴您的其他代码,并告诉我们错误在哪里。 – Programmer
@Programmer我试图在运行时创建一个GUIText,但它需要传递一个字符串。所以我想将search [“hits”]转换为一个字符串。但是出现一个错误。所以我的目标是打印我所有的结果在屏幕上。 –
您需要使用JsonUtility。请张贴你的json的样子,我会告诉你如何打印它。 – Programmer